在多模块Maven项目中有选择地构建特定模块和依赖项。

3
当运行mvn install -pl "project1, project2, etc." -am -Pmy-profile时,Maven将构建指定的模块及其所有依赖项,如果依赖项很多,这可能需要一些时间。
话虽如此,由于-am标志,一些依赖项的编译可能已经存在于本地的.m2仓库和/或my-profile中,这样重新编译它们就是无用的,而且通常会耗费时间。
有没有办法指定Maven只在my-profile.m2本地仓库中不存在的情况下构建给定的-am依赖项?
关于潜在的重复问题Maven 2:仅在本地仓库中未安装时构建构件
在我的情况下,我确实希望构建在-pl标志之后引用的项目,无论它们是否已经构建过。问题在于依赖关系。此外,那个问题是关于Maven 2的,也许事情已经发生了变化。

1
这个回答解决了你的问题吗?Maven 2: 只有在本地仓库中尚未安装构建工件时才构建 - undefined
3
这篇帖子正在进行讨论。 - undefined
2
尽力在帖子中提供最好的自包含演示。不要让读者去其他地方,比如另一个问答或版本,将所有需要询问的内容都放在帖子中。通过编辑来澄清问题,而不是通过评论。删除和标记过时的评论。如果另一个问答不是重复的,请在帖子中进行编辑,以自包含的方式明确这一点,不要要求我们去其他地方查看。引用和解释时请注明出处。在元数据中提到参考早期版本的建议是一个不好的主意。附注:在帖子中避免社交和元数据评论。附注:是或否的问题很少有用,也很少能得到实际想要的答案。 - undefined
1个回答

2
简短回答:Maven本身无法实现此功能。一旦使用-am来指定依赖项应包含在反应堆中(或通过配置文件包含/排除它们),原始-pl列表就没有特殊之处,因此这实际上是Maven 2: Only build artifact if not already installed in local repository的重复,该问题有类似的答案:

简短回答是:没有合理的方法可以做到这一点,Maven不是这样工作的。

您可以通过使用增量构建或构建自己的Maven脚本来获得更好的结果。您还可以使用配置文件来专注于项目的子集,但没有现有的命令行标志或配置选项可以实现您的要求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接