我的项目的模块(dep
)之一有一个module1
库。依赖关系在父dependencyManagement
部分中声明。
...
<groupId>group1</groupId>
<artifactId>parent-proj</artifactId>
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>group2</groupId>
<artifactId>dep</artifactId>
<version>1</version>
</dependency>
</dependencies>
</dependencyManagement>
...
...
<parent>
<groupId>group1</groupId>
<artifactId>parent-proj</artifactId>
...
</parent>
<artifactId>module1</artifactId>
...
<dependencies>
<dependency>
<groupId>group2</groupId>
<artifactId>dep</artifactId>
</dependency>
</dependencies>
...
dep
反过来依赖subdep
,我希望将module2
用作继承自同一parent-proj
的另一个模块(module2
)中的依赖项。关键是要使subdep
使用相同版本的dep
subdep
取决于没有在我的项目中明确声明版本。但是,当我尝试将module2
的依赖项添加到subdep
时,Maven没有意识到必须使用哪个版本的...
<parent>
<groupId>group1</groupId>
<artifactId>parent-proj</artifactId>
...
</parent>
<artifactId>module2</artifactId>
...
<dependencies>
<dependency>
<groupId>group2</groupId>
<artifactId>subdep</artifactId>
</dependency>
</dependencies>
...
:
module2$ mvn dependency:tree
...
[ERROR] 'dependencies.dependency.version' for group2:subdep:jar is missing
...
WITH cte
AS (
select Me, MyParent, Attribute, 'valueToCarry' value_to_Carry
from MyTable
where
Attribute in
(
847
,1011
,1019
)
UNION ALL
SELECT Link.Me, Link.Parent, Link.Attribute, cte.value_to_carry
FROM cte
JOIN LINK ON cte.Me = S.Parent
)
有没有办法在子项目中使用在父项目中隐式管理的传递依赖?
答案 0 :(得分:1)
由于dependencyManagement
仅定义约束(如版本),而不是真正的dependencies
,为什么不将版本对齐放在共享父pom中?
更新依赖版本可能会有些奇怪,但是当你既没有时间找到原因也没有实际修复它时,如何实现失败的构建。
dep
的所有者可以升级其与subdep
的版本相关性,即使您没有通过版本增量dep
通知您。你的构建变得不可复制。
如果您的模块依赖于subdep
版本1的API,那么您通常希望进行受控迁移&#39;如果没有任何改变,也许没有理由在第一时间增加版本号。
为了减轻痛苦,我建议您查看Maven版本插件:
关于如何告诉Maven&#34;只是使用最新的&#34;见: