Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java maven依赖项版本问题_Java_Jar_Maven 3 - Fatal编程技术网

Java maven依赖项版本问题

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

我刚刚遇到了与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版本,即App_1.jar,其版本是4.2.9。

    这是代码

    **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只支持使用“最近的定义”,这意味着它将使用依赖关系树中与您的项目最接近的依赖关系的版本)。