簡體   English   中英

Maven依賴版本問題

[英]maven dependency version issues

我剛遇到有關Maven和Dependent JAR版本的問題。 我創建以下項目來分析問題。

  1. 我創建了使用春天版本4.2.9的App_1.jar。
  2. 我創建了使用春季版本4.3.4的App_2.jar。
  3. 我使用春季版本4.3.6創建了App_3.jar。
  4. 我創建了App_Main.war,它將是App_1.jar,App_2.jar,App_3.jar。

根據maven的說法,如果您使用其他版本,它將使用最新版本,但在我的情況下,它將使用jar的春季版本,我首先包含的是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>

您在哪里讀過maven使用的最新版本?

對於傳遞依賴項,Maven使用“最近獲勝”策略來解決版本沖突,這意味着它將在依賴項樹中使用與您的項目最接近的依賴項的版本。

Maven傳遞依賴項

一種可能的解決方案是使用<dependencyManagement>解決您的沖突。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>spring_context_version_you_want_to_use</version>
        </dependency>
    </dependencies>
</dependencyManagement>

Maven依賴管理

您可以使用以下命令檢查依賴關系樹:

mvn dependency:tree -Dverbose -Dincludes=your-jar

使用依賴關系樹解決沖突

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM