Java maven依赖项版本问题
我刚刚遇到了与Maven和依赖JAR版本相关的问题。我创建以下项目来分析问题Java maven依赖项版本问题,java,jar,maven-3,Java,Jar,Maven 3,我刚刚遇到了与Maven和依赖JAR版本相关的问题。我创建以下项目来分析问题 我创建了App_1.jar,它使用spring版本4.2.9 我创建了App_2.jar,它使用的是spring版本4.3.4 我创建了App_3.jar,它使用的是spring版本4.3.6 我创建了App_Main.war,它将App_1.jar、App_2.jar、App_3.jar 根据maven的说法,如果您使用不同的版本,它将使用最新版本,但在我的例子中,它使用的是我首先包含的jar的spring版本,即A
**App_1 POM.xml**
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ksh</groupId>
<artifactId>App_1</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>App_1</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.9.RELEASE</version>
</dependency>
</dependencies>
</project>
**App_2 POM.xml**
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ksh</groupId>
<artifactId>App_2</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>App_2</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.4.RELEASE</version>
</dependency>
</dependencies>
</project>
**App_3 POM.xml**
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ksh</groupId>
<artifactId>App_3</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>App_3</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
</dependencies>
</project>
App_Main POM.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>App_Main</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>App_Main Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.ksh</groupId>
<artifactId>App_1</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.ksh</groupId>
<artifactId>App_2</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.ksh</groupId>
<artifactId>App_3</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<build>
<finalName>App_Main</finalName>
</build>
</project>
**App_1 POM.xml**
4.0.0
com.ksh
附录1
罐子
1
附录1
http://maven.apache.org
org.springframework
spring上下文
4.2.9.1发布
**App_2 POM.xml**
4.0.0
com.ksh
应用程序2
罐子
1
应用程序2
http://maven.apache.org
org.springframework
spring上下文
4.3.4.1发布
**App_3 POM.xml**
4.0.0
com.ksh
附录3
罐子
1
附录3
http://maven.apache.org
org.springframework
spring上下文
4.3.6.1发布
App_Main POM.xml
4.0.0
com.mycompany.app
主应用程序
战争
1
App_Main Maven Webapp
http://maven.apache.org
com.ksh
附录1
1
com.ksh
应用程序2
1
com.ksh
附录3
1
主应用程序
你在哪里读到maven使用最新版本的
对于过渡依赖项,Maven使用“最近的wins”策略来解决版本冲突,这意味着它将使用依赖项树中与项目最接近的依赖项的版本
一种可能的解决方案是使用
解决冲突
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>spring_context_version_you_want_to_use</version>
</dependency>
</dependencies>
</dependencyManagement>
你在哪里读到maven使用最新版本的 对于过渡依赖项,Maven使用“最近的wins”策略来解决版本冲突,这意味着它将使用依赖项树中与项目最接近的依赖项的版本 一种可能的解决方案是使用
解决冲突
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>spring_context_version_you_want_to_use</version>
</dependency>
</dependencies>
</dependencyManagement>
Maven不会自动选择最新版本。你在哪里读到的?它将选择它认为“依赖关系树中最近的依赖关系”:(Maven 2.0只支持使用“最近的定义”,这意味着它将使用依赖关系树中与您的项目最接近的依赖关系的版本)。Maven不会自动选择最新版本。你在哪里读到的?它将选择它认为“依赖关系树中最近的依赖关系”:(Maven 2.0只支持使用“最近的定义”,这意味着它将使用依赖关系树中与您的项目最接近的依赖关系的版本)。