Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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
Maven 如何使用父项目中隐式管理的可传递依赖项?_Maven_Maven 3 - Fatal编程技术网

Maven 如何使用父项目中隐式管理的可传递依赖项?

Maven 如何使用父项目中隐式管理的可传递依赖项?,maven,maven-3,Maven,Maven 3,我的项目的一个模块(module1)依赖于一个dep库。依赖关系在父级的dependencyManagement部分中声明 。。。 第一组 母项目 ... 第2组 副署长 1. ... module2$mvn依赖项:树 ... [错误]:缺少group2:subdep:jar的“dependencies.dependency.version” ... 有没有办法在子项目中使用在父项目中隐式管理的可传递依赖项?因为只定义约束(如版本),而不是真正的依赖项,为什么不将版本对齐放在共享父pom中

我的项目的一个模块(
module1
)依赖于一个
dep
库。依赖关系在父级的
dependencyManagement
部分中声明

。。。
第一组
母项目
...
第2组
副署长
1.
...

module2$mvn依赖项:树
...
[错误]:缺少group2:subdep:jar的“dependencies.dependency.version”
...
有没有办法在子项目中使用在父项目中隐式管理的可传递依赖项?

因为只定义约束(如版本),而不是真正的
依赖项,为什么不将版本对齐放在共享父pom中

更新依赖项版本可能会让人感到奇怪,但是如果您没有时间找到原因,也没有时间实际修复它,那么突然出现一个失败的构建又如何呢

dep
的所有者可以升级其关于
subdep
的版本依赖关系,即使不通过
dep
的版本增量通知您。你的作品变得不可复制

如果您的模块依赖于
subdep
版本1的API,那么您通常希望执行到版本2的“受控迁移”。如果没有任何变化,可能也没有理由首先增加版本号

为了减轻痛苦,我建议查看Maven版本插件:

有关如何告诉Maven“只使用最新版本”的讨论,请参阅:


因为如果我决定切换到依赖于较新版本的
subdep
subdep
subdep
版本2,这样明确定义的
subdep
版本将覆盖
subdep
版本2的依赖关系树中的
subdep
。因此,每当我更改
dep
的版本时,我都必须手动重新调整显式定义。“dep的所有者可能会升级其与subdep相关的版本依赖关系,即使没有通过dep的版本增量让您知道。您的构建变得不可复制。”-另一方面,在
dependencyManagement
中重写
subdep
的版本会有生成错误的风险,因为它不包括
dep
所需的
subdep
版本。而且因为构建时没有错误,所以只有在集成测试期间甚至在运行时才会发现构建的不一致性。是的,当一个构建的两个构件(您的构件和
dep
)直接依赖于第三个(
subdep
)但具有两个不同版本时,在我们有了真正的模块之前,其中一个可能总是松散的,这些版本可以在运行时共存。
...
<parent>
    <groupId>group1</groupId>
    <artifactId>parent-proj</artifactId>
    ...
</parent>
<artifactId>module1</artifactId>
...
<dependencies>
        <dependency>
            <groupId>group2</groupId>
            <artifactId>dep</artifactId>
        </dependency>
</dependencies>
...
...
<parent>
    <groupId>group1</groupId>
    <artifactId>parent-proj</artifactId>
    ...
</parent>
<artifactId>module2</artifactId>
...
<dependencies>
        <dependency>
            <groupId>group2</groupId>
            <artifactId>subdep</artifactId>
        </dependency>
</dependencies>
...