1

我有一个多模块项目,其中一个子模块依赖于另一个,如下所示:

pom.xml (parent pom)
|
+---- pom.xml (project A)
|
+---- pom.xml (project B) depends on A

我正在詹金斯中构建它,使用“增量构建”选项(Maven 作业类型)。我的问题是,当只有项目 B 发生变化时(这意味着 jenkins 只构建项目B),Jenkins 正在从项目 A 下载最新快照,而不是使用项目 A 的“目标”目录中存在的二进制文件(在以前的构建中生成)。

如果触发了完整构建,问题就会消失,并且 Jenkins 会使用正确的二进制文件。有没有人有同样的问题?

谢谢!

4

1 回答 1

1

这不是问题,它是 maven 的运作方式。工件总是从存储库中获取,即使对于多模块构建也是如此。如果您构建整个树,您只是不会注意到,因为从本地 repo 中提取的工件是几分钟前您的构建放置在那里的工件。

如果您打开项目 B 的根目录的命令提示符并从命令行执行 maven 构建,您将获得完全相同的行为 - maven 将在本地存储库中查找 A(以及远程,如果未找到)并且不会查找在 A 的 /target 目录中。

如果这是标准 maven,您可以使用根目录中的 maven 的also-make 标志,并告诉 maven 构建项目 B 和 B 的所有依赖项,这将使 maven 也构建 A。

于 2013-07-04T11:06:05.437 回答