Maven 多模块依赖解析

5
当使用Maven与多模块项目时,例如:
/pom.xml
/project-a/pom.xml
/project-b/pom.xml

如果根POM构建模块A和B,且B“依赖于”A,当我从“根POM”运行mvn package进行构建时:
问题:对于B的构建,是否从当前构建“反应堆”中提取依赖项A?(即正在“构建”的A中的更改)还是它总是去本地存储库?
基本上,我想弄清楚当A发生更改并影响到B时,是否需要运行mvn install,还是可以运行mvn package以节省时间。

2
如果您通过mvn clean package或者mvn clean verify从根目录运行它,依赖项将在反应堆内解决。这意味着您永远不需要执行mvn clean install。如果您在多模块构建中遇到需要执行mvn clean install的情况,那么这意味着模块内的依赖关系不正确。而且,对于包含在反应堆中的模块,它不会去远程仓库... - khmarbaise
1个回答

3
如果您通过mvn clean package或者mvn clean verify(如果有集成测试)从根目录运行它,那么依赖关系将在反应堆内解决。
这意味着您永远不需要执行mvn clean install。如果您在多模块构建中面临需要执行mvn clean install的情况,那么这意味着您模块内的依赖关系是不正确的。
不,它不会到远程存储库获取包含在反应堆内的模块。

谢谢!在Maven文档中很难找到任何关于这种行为的参考。 - Craig Otis
@CraigOtis,你能建议一下把这样的信息放在哪里,或者最好在 https://github.com/apache/maven-site/issues 上开一个问题吗?如果你能为你认为它属于的页面创建一个拉取请求来更新文档,那就太棒了... - khmarbaise
也许在多模块页面上?https://maven.apache.org/guides/mini/guide-multiple-modules.html 那是我记得查看的地方。 - Craig Otis

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