Maven传递依赖的时候,同名包不同版本号的包均会下载,可是编译的时候,仅仅会载入一个高版本号的。

描写叙述,在一个Maven项目中。同一时候依赖了spring-tomcat-weaver  和  struts-core 包。可是spring-tomcat-weaver 须要commons-digester-1.2

struts-core 须要commons-digester-1.8

Pom文件例如以下:

	<dependencies>

		<dependency>
		    <!-- 须要commons-digester-1.2包 -->
		    <groupId>org.springframework</groupId>
            <artifactId>spring-tomcat-weaver</artifactId>
            <version>2.5.6</version>
		</dependency>

		<dependency>
		    <!-- 须要commons-digester-1.8包 -->
		  <groupId>org.apache.struts</groupId>
		  <artifactId>struts-core</artifactId>
		  <version>1.3.10</version>
		</dependency>

	</dependencies>

在maven打包的时候,commons-digester 的1.2  和1.8两个版本号的jar包都会下载下来,可是编译的时候,仅仅会包括1.8版本号。

图片例如以下:运行的命令是:mvn dependency:tree 查看依赖的树。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmx5ZmlzaDc3OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

时间: 2024-10-29 19:08:16

Maven传递依赖的时候,同名包不同版本号的包均会下载,可是编译的时候,仅仅会载入一个高版本号的。的相关文章

Maven传递依赖的时候,同名包不同版本的包均会下载,但是编译的时候,只会加载一个高版本的。

描述,在一个Maven项目中,同时依赖了spring-tomcat-weaver  和  struts-core 包,但是spring-tomcat-weaver 需要commons-digester-1.2 struts-core 需要commons-digester-1.8 Pom文件如下: <dependencies> <dependency> <!-- 需要commons-digester-1.2包 --> <groupId>org.springfr

maven exclusion 解决maven传递依赖中的版本冲突

传递依赖是maven最有特色的.最为方便的优点之一,可以省了很多配置.如a 依赖 b,b 依赖c 默认 a也会依赖 c.但是也会带来隐患,如版本冲突.当然maven也考虑到解决办法,可以使用exclusions来排除相应的重复依赖. 但是我们还会遇到一个严重的问题,那就是,我怎么知道是哪个包的传递依赖产生的冲突 ?那该怎么办呢?当然,maven也会有相应的解决方案. 首先,你要在pom.xml中加上maven-project-info-reports-plugin插件. <reporting>

解决maven传递依赖中的版本冲突

首先在pom.xml中添加: <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId> maven-project-info-reports-plugin </artifactId> </plugin> </plugins> </reporting> 如果用的是eclip

转】Maven实战(七)---传递依赖

原博文出自于:http://blog.csdn.net/liutengteng130/article/details/47000069   感谢! 假设A-->C  B-->A      ==> B-->C ,A依赖于C是直接依赖,B依赖于A是直接依赖,B依赖于C是传递依赖. 现象一 举个例子:A-->log1.0  B-->log2.0 C-->A,B 那么我们来看依赖关系: User-core依赖于log4j 1.2.17 <dependency>

Maven实战(七)---传递依赖

假设A-->C  B-->A      ==> B-->C ,A依赖于C是直接依赖,B依赖于A是直接依赖,B依赖于C是传递依赖. 现象一 举个例子:A-->log1.0  B-->log2.0 C-->A,B 那么我们来看依赖关系: User-core依赖于log4j 1.2.17 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifact

maven 的作用域和传递依赖问题

maven的作用域共有五个: (1) compile   默认就是compile,什么都不配置也就是意味着compile.compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖.打包的时候通常需要包含进去. (2)   test   scope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行.比较典型的如junit. (3)   runntime  runntime表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期

Maven传递依懒

A依赖B,B依赖C.B是A的直接依赖,C是A的传递依赖. 1.Maven自己调解原则 先定义者优级先原则,谁先定义就用谁的传递依赖. 路径近者优级先原则,直接依赖级别高高于传递依赖. 2.排除依懒 <exclusions> <exclusion> <artifactId>spring-beans</artifactId> <groupId>org.springframework</groupId> </exclusion>

maven入门(8)maven的依赖管理

我们项目中用到的jar包可以通过依赖的方式引入,构建项目的时候从Maven仓库下载即可. 1. 依赖配置    依赖可以声明如下: Xml代码   <project> ... <dependencies> <dependency> <groupId>group-a</groupId> <artifactId>artifact-a</artifactId> <version>1.0</version>

Maven 实现依赖框架jar包的版本管理

1.版本统一管理 要实现jar的版本统一管理需要对jar的版本进行设置即<version></version>,如下是一段版本控制的以来配置: <dependencies> ................. <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-all</artifactId> <version>${o