我有一个多模块 Maven 项目,其中包含一个父项目P和三个子模块A、B和C. 两者都是战争项目B,C都依赖于A.
P
A
B
C
我可以输入mvn compile并P正确编译所有子模块。当我想对特定模块进行操作时,问题就来了。
mvn compile
我希望能够为 project 打包一个战争B,但是当我从 ‘s 目录运行 package 命令时B,它抱怨它找不到A.
我从这个问题中了解到:Maven 和依赖模块也许 Maven 并不是真正为这种依赖解析而设计的,但这引出了我如何打包的问题B?
mvn package当我真正想要的时候,我是否必须运行整个项目层次结构B?
mvn package
每次打包时都必须将 A 的快照安装到本地存储库中B吗?
A当仍在积极开发中时,第二种情况并不有趣。
这里有什么最佳实践吗?
使用Maven 高级反应器选项,更具体地说:
-pl, --projects Build specified reactor projects instead of all projects -am, --also-make If project list is specified, also build projects required by the list
所以只需cd进入父 P 目录并运行:
cd
mvn install -pl B -am
这将构建 B 和 B 所需的模块。
请注意,如果您引用artifactId的目录名称与目录名称不同,则需要使用冒号:
artifactId
mvn install -pl :B -am