maven依赖和传递】的更多相关文章

compile (编译范围) compile是默认的范围:如果没有提供一个范围,那该依赖的范围就是编译范围.编译范围依赖在所有的classpath 中可用,同时它们也会被打包. 只有compile 才会传递 provided (已提供范围) provided 依赖只有在当JDK 或者一个容器已提供该依赖之后才使用.例如, 如果你开发了一个web 应用,你可能在编译 classpath 中需要可用的Servlet API 来编译一个servlet,但是你不会想要在打包好的WAR 中包含这个Serv…
在maven的pom文件中 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version></version> <scope>test</scope> </dependency> </dependencies> 那这个例子很简单,但是实际开发…
一: 依赖范围scope 共5种,compile (编译).test (测试).runtime (运行时).provided.system 不指定,则依赖范围默认为compile. compile:编译依赖范围,在编译,测试,运行时都需要. test: 测试依赖范围,测试时需要.编译和运行不需要.如Junit runtime: 运行时依赖范围,测试和运行时需要.编译不需要.如JDBC驱动包 provided:已提供依赖范围,编译和测试时需要.运行时不需要.如servlet-api system:…
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6628429.html  一:Maven依赖传递 假如有Maven项目A,项目B依赖A,项目C依赖B.那么我们可以说 C依赖A.也就是说,依赖的关系为:C—>B—>A. 那么我们执行项目C时,会自动把B.A都下载导入到C项目的jar包文件夹中. 这就是依赖的传递性. 二:依赖传递的排除 如上,C—>B—>A.加入现在不想执行C时把A下载进来,那么我们可以用 <exclusions>标…
本节主要讲了 1 maven依赖传递 本地项目路径:F:\xiangmu3\Xin\FuQiang\maven\code 2 maven排除依赖 3 注意事项 4 零散知识点 1 maven依赖传递 <!-- 南哥项目--> <!-- 山鸡依赖于南哥,南哥依赖于逼哥在这里添加依赖关系 --> <dependency> <groupId>com.hongxing</groupId> <artifactId>hongxing-bige&l…
此文已由作者翟曜授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 最近在测试过程中,遇到了几次maven传递依赖冲突的问题,所以记录下解决的过程,遇到类似问题供参照. 问题现象: 某服务不可用,查看启动log有报错信息,例如: java.lang.NoSuchMethodError,类名和方法名看起来,初步判断出是在某个依赖的jar包里. 排查步骤: 首先确认是哪个jar包.根据类名进行搜索,确认jar包为:netty.同时发现本地依赖的jar包版本都有多个,已经基本可断…
说maven依赖冲突之前需要先说说maven的 依赖传递. 依赖传递 当前项目引入了一个依赖,该依赖的依赖也会被引入项目.更加准确的说法是,maven会解析直接依赖的POM,将那些必要的间接依赖,以传递依赖的形式引入到当前项目中. 为什么说是'必要的间接依赖'呢?这是因为不是所有的间接依赖都会被引入的.这还得说说maven的 依赖范围. 依赖范围 maven引入依赖,并不是把jar包拷贝到项目中来,而是把jar包下载到本地仓库,然后通过制定classpath来在项目中引入具体的jar包.mave…
通常情况下,我们都比较喜欢使用maven进行项目管理,要加个依赖包也非常简单,不需要到处去下载jar包,当然除了maven之外,也还有一些非常不错的工具.在使用maven进行项目依赖管理的时候,有时候会出现一种情况,多个不同的开源组件都依赖了另外一个组件,但是这个组件的版本却不一样,在maven依赖中就会看到两个版本不同的jar,通常我们可以根据实际情况排除其中一个,当然前提是这个版本没有太大的差异,兼容.老规矩,直接了当说怎么做吧: 1.手工添加配置:在dependency标签里使用子标签ex…
上次读书笔记中,提到了依赖传递.看着依赖传递表,一直在思考为什么会是这样. 先看传递表: compile test provided runtime compile test provided runtime compile test provided runtime - - - - - - - - runtime test provided runtime (最左边一列表示第一依赖范围,最上边一行表示第二依赖范围) 需要详细理解的知识点: 1.首先看看scope的作用:scope是用来排除多余…
1 依赖的传递 假如 A项目 依赖 a.jar 1.0.1,b.jar 1.0.1,没有直接依赖c.jar 1.0.1,但是b.jar 1.0.1依赖了c.jar 1.0.1,可以说A项目间接依赖了c.jar 1.0.1 B项目 依赖 a.jar 1.0.2,b.jar 1.0.2,c.jar 1.0.2. C项目直接依赖 A,B项目 但是C中的pom文件先依赖A再依赖B 那么C中a.jar 的版本为1.0.1  a.jar都是直接依赖,按照依赖的优先顺序,而C中c的jar版本为1.0.2. 2…
为什么会出现依赖冲突 首先要说明Maven的依赖管理,具体的可以参考这边 Maven学习——依赖管理 这篇文章,maven在依赖冲管理中有一下几个原则. 依赖是使用Maven坐标来定位的,而Maven坐标主要由GAV(groupId, artifactId, version)构成.如果两个相同的依赖包,如果groupId, artifactId, version不同,那么maven也认为这两个是不同的. 依赖会传递,A依赖了B,B依赖了C,那么A的依赖中就会出现B和C. Maven对同一个gro…
1:前言 做软件开发这几年遇到了许多的问题,也总结了一些问题的解决之道,之后慢慢的再遇到的都是一些重复性的问题了,当然,还有一些自己没有完全弄明白的问题.如果做的事情是重复的,遇到重复性问题的概率也就会比较多了,如果是在一个新的领域里玩,遇到的问题又都是新的,自己从来没有见过的,但是问题的解决思路基本是类似的.下面这个问题,我觉得值得一记,因为以后还会再遇到类似的,我希望自己能很快的将其解决掉. 2:报错信息 如下是更新项目后,启动项目时抛出的部分错误信息. 十二月 14, 2016 7:52:…
1  概念介绍 之前我们说过,maven 坐标能够确定一个项目.换句话说,我们可以用它来解决依赖关系.在 POM 中,依赖关系是在 dependencies部分中定义的.在上面的 POM 例子中,我们用 dependencies 定义了对于 junit 的依赖: <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <…
相同依赖级别,先加入的先依赖不同依赖级别,级别短的先依赖 version-->SNAPSHOTxxx-里程碑-->SNAPSHOT,alpha,beta,Release(RC),GA()svn版本控制cms0.0.1-SNAPSHOT-->cms0.0.1-Release-->cms1.0.1-SNAPSHOT -->cms0.1.1-SNAPSHOT-->cms1.0.1-RELEASE -->cms0.1.1-release 1. 依赖配置    依赖可以声明…
一.maven 依赖传递规则 举个例子,比如A依赖B,B依赖C,那么A也是依赖C的.A是对B的直接依赖,A对C是传递依赖 ①.最短路劲原则 如,路劲一:A依赖B,B依赖C,C依赖D(1.0.0): 路劲二:A依赖E,E依赖D(2.0.0), 此时A间接依赖D版本是2.0.0! ②.最先定义原则 如,路劲一:A依赖B,B依赖C(1.0.0): 路劲二:A依赖E,E依赖C(2.0.0), 此时A间接依赖C版本是1.0.0! 题外话,如果想精确的控制依赖包版本,可以使用依赖的排除功能——>exclus…
本文将记录Maven工程中依赖解析机制,内容包括: Maven依赖基本结构 从仓库解析依赖的机制 依赖传递性解析实例 1. Maven依赖基本结构 上篇文章记录了Maven依赖的聚合与继承,POM中依赖的声明通过dependency进行定义,并且通过groupId.artifactId及version三项定位Maven库中的唯一依赖.除了这三项外,还有其他属性进行限制,如下: <dependencies> <dependency> <groupId>...</gr…
背景 昨天帮一位同事排查了一个依赖冲突的问题.问题的现象就是在IntelliJ IDEA运行项目正常,但是打包(Maven assembly jar)之后传到服务器运行失败,报错:Caused by: java.lang.NoSuchFieldError: INSTANCE. 后来定位到某个类存在多个版本,其中一个版本是没有INSTANCE的.进一步发现项目所依赖的其他module,都是以assembly jar的形式install到本地仓库的,最终通过修改pom文件,对所依赖的module重新…
hessian结合spring的demo         hessian的maven依赖: <!-- hessian --> <dependency>         <groupId>com.caucho</groupId>         <artifactId>hessian</artifactId>         <version>4.0.7</version> </dependency>…
依赖的传递性 注意1:在Eclipise创建的Maven项目,若依赖eclipse空间中其他自己创建的 的项目时,此时并不会报错,但是当执行mvn compile命令时还是会显示缺失败.所以依赖的其他自己创建的项目必须执行安装,但是**在eclipse中开发的时候没有必要每次执行mvn installation,因为并不影响开发,只有开发完毕之后,在一起执行安装. 本质:即自己创建的项目必须安装到本地仓库中,但是在eclipse中不安装不会影响开发,但最后开发完毕打包时还是需要执行安装命令. 注…
一.依赖范围(scope): 共5种,compile (编译).test (测试).runtime (运行时).provided.system compile:编译依赖范围,在编译,测试,运行时都需要.依赖范围默认为compile. test: 测试依赖范围,测试时需要.编译和运行不需要.如Junit runtime: 运行时依赖范围,测试和运行时需要.编译不需要.如JDBC驱动包 provided:已提供依赖范围,测试和编译时需要.运行时不需要.如servlet-api system:系统依赖…
maven的坐标和依赖 坐标和依赖,主要涉及的就是pom文件的头部和<dependencies>标签部分(1)pom文件的头部 这里头部不是指pom文件的开头<project>标签的属性: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi = http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation = "htt…
Maven依赖中的scope详解 项目中用了<scope>test</scope>在eclipse里面用maven install可以编译成功,到服务器上用命令执行报VM crash错误,原因是test代码提交上去了,但没有对应的junit包导致的 解决办法:1.服务器上编译的时候排除掉test代码.2.把<scope>test</scope>改成<scope>compile</scope> <dependency> &l…
maven依赖管理 1.依赖范围   (依赖相当于java中的import  是否需要导入别的jar包) 使用控制依赖与三种classpath(编译期,测试时期,运行时期)的关系 complie   在编译,测试,运行时期,a项目在编译期依赖b,并且在测试和运行时期也依赖b项目, (默认值)             会打jar包或者war包 test    只在测试时有效,    a项目只在测试时依赖b项目,   不会打jwar包 provided  在编译和测试是有效,在运行时不会打jar或w…
其中一个Maven的核心特征是依赖管理.管理依赖关系变得困难的任务一旦我们处理多模块项目(包含数百个模块/子项目). Maven提供了一个高程度的控制来管理这样的场景. 传递依赖发现 这是很通常情况下,当一个库说A就依赖于其他库说B的情况下,另一个项目Ç想用A,则该项目需要使用库中B. 在Maven帮助下以避免这样的要求来发现所有需要的库. Maven通过读取依赖项项目文件(pom.xml中),找出它们的依赖等. 我们只需要在每个项目POM定义直接依赖关系. Maven自动处理其余部分. 传递依…
Maven 插件和仓库 Maven 本质上是一个插件框架,它的核心并不执行任何具体的构建任务,仅仅定义了抽象的生命周期,所有这些任务都交给插件来完成的.每个插件都能完成至少一个任务,每个任务即是一个功能,将这些功能应用在构建过程的不同生命周期中.这样既能保证拿来即用,又能保证 maven 本身的繁杂和冗余. 将生命周期的阶段与插件目标相互绑定,就可以在特定的阶段完成具体的构建任务.例如清单 2 中的代码就是要在 validate 这个阶段执行 maven-antrun-plugin 的 run…
ylbtech-Java-Maven-Runoob:Maven 依赖管理 1.返回顶部 1. Maven 依赖管理 Maven 一个核心的特性就是依赖管理.当我们处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难.针对此种情形,Maven 提供了一种高度控制的方法. 可传递性依赖发现 一种相当常见的情况,比如说 A 依赖于其他库 B.如果,另外一个项目 C 想要使用 A ,那么 C 项目也需要使用库 B. Maven 可以避免去搜索所有所需库的需求…
一.依赖的范围 依赖的范围有几个可选值,我们用得到的是:compile.test.provided 三个. [1]从项目结构角度理解 compile 和 test 的区别 [2]从开发和运行这两个不同阶段理解 compile 和 provided 的区别 二.不同作用域的有效性 三.依赖的传递性 非compile范围的依赖不能传递,必须在有需要的工程中单独加入 <dependency> <groupId>junit</groupId> <artifactId>…
3.1 依赖的配置 一个依赖声明可以包含下面元素: <dependencies> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> <type></type> <scope></scope> <optional></optional>…
1.如图我们有三个项目,项目Age,项目Bge,项目Cge 2.我们使Age项目依赖到Bge项目,Bge项目依赖到Cge项目 Age项目和Bge项目分别执行命令:mvn install  打包*.jar包,且放到本地仓库中 配置项目Bge的xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi…
目录: 1.什么是依赖? 2.依赖的管理:依赖的范围与传递,依赖的排除,依赖的原则(maven对依赖冲突的处理原则) 3.依赖的版本管理 4.继承与聚合 1.什么是依赖? 简单的讲,当jar包A需要jar包B的支持才能正常工作时,那么B就是A的依赖,以spring-core为例,它依赖commons-logging,再比如commons-fileupload,它依赖commons-io 对于软件开发人员来说,手动拷贝jar包时常会碰到依赖关系的问题,特别是搭框架的时候,更是让人头大,不是缺这个就…