我有一个父项目多模块Maven项目P和三个子模块A,B和C。这两个B和C是战项目,都依赖于A。
A
B
C
我可以输入mvn compile在P和拥有所有的子模块正确的编译的。当我要对特定模块进行操作时,问题就来了。
mvn compile
P
我希望能够为项目打包战争B,但是当我从B的目录运行package命令时,它抱怨找不到的依赖项A。
package
我从这个问题中了解到: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