gpt4 book ai didi

maven - 如何在 Maven 中指定传递依赖的版本?

转载 作者:行者123 更新时间:2023-12-04 19:36:45 25 4
gpt4 key购买 nike

我有一个依赖于 B 的依赖项 A,而在 A 的 pom 文件中,可以指定 B'version。所以我想知道如何在构建时指定 B 的版本?谢谢。

最佳答案

如其他答案所述,“ transient 依赖”涉及 3 个 Artifact

  • A 依赖于 B
  • B 依赖于 C

  • 所以 C 是 A 的传递依赖

    您想要的是控制每个正在运行的构建的依赖项的版本号。为此,您应该将该特定依赖项的版本号绑定(bind)到 Maven 属性
    <?xml version="1.0" encoding="UTF-8"?><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/xsd/maven-4.0.0.xsd"<modelVersion>4.0.0</modelVersion>

    <artifactId>A</artifactId>
    <groupId>com.xyz</groupId>
    <version>1.0</version>



    <properties>
    <B_project_version>1.5</B_project_version>
    </properties>

    <dependencies>
    <dependency>
    <groupId>com.xyz</groupId>
    <artifactId>B</artifactId>
    <version>${B_project_version}</version>
    </dependency>
    </dependencies>

    现在您可以将参数传递给您的构建以指定“B_project_version”的值,例如
    man package -DB_project_version=3.8

    如果您没有为正确的值指定任何值,则将使用默认值(上例中的 1.5)

    使用合适的配置文件定义为最可能的场景定义配置文件很方便
     <profiles>
    <profile>
    <id>use_version_2</id>
    <properties>
    <B_project_version>2.0</B_project_version>
    </properties>
    </profile>
    <profile>
    <id>use_version_1</id>
    <properties>
    <B_project_version>1.0</B_project_version>
    </properties>
    </profile>
    </profiles>

    如果您的意图是控制真正的传递依赖,则必须在 pom 中将其从 B 依赖中排除并使其成为 直接依赖。 上面的例子变成
    <properties>
    <C_project_version>1.5</C_project_version>
    </properties>

    <dependencies>
    <dependency>
    <groupId>com.xyz</groupId>
    <artifactId>B</artifactId>
    <version>1.0</version>
    <exclusions>
    <exclusion>
    <groupId>com.xyz</groupId>
    <artifactId>C</artifactId>
    </exclusion>
    </exclusions>
    </dependency>
    <dependency>
    <groupId>com.xyz</groupId>
    <artifactId>C</artifactId>
    <version>${C_project_version}</version>
    </dependency>
    </dependencies>


    <profiles>
    <profile>
    <id>use_version_2</id>
    <properties>
    <C_project_version>2.0</C_project_version>
    </properties>
    </profile>
    <profile>
    <id>use_version_1</id>
    <properties>
    <C_project_version>1.0</C_project_version>
    </properties>
    </profile>
    </profiles>

    关于maven - 如何在 Maven 中指定传递依赖的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39715882/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com