1

我在多模块项目中有以下 Maven 结构:

aggregator-level-0
-- module-level-1 (jar)
-- aggregator-level-1
---- module-level-2.1 (jar)
---- module-level-2.2 (jar)

aggregator-level-0 pom 不仅是一个聚合器,也是其余模块的父级(继承)。它包括一个 DependencyManagement 部分。

module-level-1 包含 module-level-2.1 作为运行时依赖项,因此我在 aggregator-level-0 pom 的 DependencyManagement 部分添加了 module-level-2.1。

当我在本地构建项目(maven 3.0.4)时,使用 -o 选项并让我的 m2 本地存储库为空,一切都像一个魅力。Maven 完美地解决了构建模块的顺序并很好地部署了工件。

当我在“jenkins”中做同样的事情时,构建失败。当解析父 pom 中的依赖管理部分时,它会尝试获取 module-level-2.1,当然它会失败,因为它尚未创建/发布。

这是预期的行为吗?Maven 和 Jenkins 是否在不同的时间获得依赖项?将构建在从该 pom 继承的子模块中构建的 pom 工件的依赖管理部分是一种不好的做法吗?

4

0 回答 0