gpt4 book ai didi

java - 如何处理maven中复杂的依赖关系?

转载 作者:行者123 更新时间:2023-12-02 03:10:37 25 4
gpt4 key购买 nike

我有项目 A 和模块 B、C。

pom.xml中,我定义了如下属性。

  <properties>
<test.version>1.0.0-SNAPSHOT</smp.version>
</properties>
<modules>
<module>B</module>
<module>C</module>
<modules>

moduleB的 pom.xml如下所示,

  <modules>
<module>X</module>
</modules>

模块 X's 依赖于 Proj1(一些外部 jar),并在父 pom test.version=1.0.0-SNAPSHOT 中定义了 vesrion

<dependency>
<groupId>group1</groupId>
<artifactId>Proj1</artifactId>
<version>${test.version}</version>
</dependency>

现在模块C依赖于模块B,因为模块C也可以单独部署,所以B所需的所有依赖项都需要包含到C中。

现在问题是在构建项目 A 时,即我通过的父项目 -Dtest.version=1.0.0

因此模块 B 是使用 proj1 的 1.0.0 版本构建的

但是模块 C (因为它依赖于 B )它是使用 Proj1 的 1.0.0-SNAPSHOT 版本创建的。在构建项目 C 时,它采用 test.version 的默认值,这是我不想要的。 B、C 应该引用相同版本的 proj1。

编辑:模块 C 的 pom

        <dependency>
<groupId>B's group id </groupId>
<artifactId>B</artifactId>
<version>${B's.version}</version>
</dependency>

所以我有

父级A

|

A 的子模块 B -> B 的子模块 X -> 带有测试版本的外部 proj1 jar

A 的子模块 C -> 对模块 B 的依赖

我知道这很复杂。但我不确定这是否也可以简化。

最佳答案

我不明白你的问题,但是<dependencyManagement>可以帮助你定义一个交叉依赖版本,只要你把它放在parent-pom(项目A)文件中即可。

<dependencyManagement>
<dependency>
<groupId>group1</groupId>
<artifactId>Proj1</artifactId>
<version>${test.version}</version>
</dependency>
</dependencyManagement>

关于java - 如何处理maven中复杂的依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41102202/

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