一尘不染

Java Maven模块+构建单个特定模块

java

我有一个父项目多模块Maven项目P和三个子模块ABC。这两个BC是战项目,都依赖于A。

我可以输入mvn compileP和拥有所有的子模块正确的编译的。当我要对特定模块进行操作时,问题就来了。

我希望能够为项目打包战争B,但是当我从B的目录运行package命令时,它抱怨找不到的依赖项A

我从这个问题中了解到:Maven和相关模块,也许Maven并不是真正为这种类型的依赖关系解决而设计的,但这引出了我该如何打包的问题B

  1. mvn package当我真的想要时,是否必须为整个项目层次结构运行B?

  2. 每次打包时都必须将A的快照安装到本地存储库中B吗?

A仍在积极开发中时,第二种情况就不好玩了。


阅读 382

收藏
2020-03-11

共1个答案

一尘不染

这里有最佳做法吗?

使用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目录并运行:

mvn install -pl B -am

这将构建B和B所需的模块。

请注意,如果引用artifactId的目录名称与目录名称不同,则需要使用冒号:

mvn install -pl :B -am
2020-03-11