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

2022-08-31 04:24:33

我有一个多模块 Maven 项目,其中包含一个父项目和三个子模块 、 和 。两者都是战争项目,两者都依赖于.PABCBCA

我可以输入并正确编译所有子模块。当我想为特定模块执行操作时,问题就来了。mvn compileP

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

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

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

  2. 我是否必须在每次要打包时将 A 的快照安装到本地存储库中?B

当仍在积极开发时,第二种情况并不好玩。A

这里有任何最佳实践吗?


答案 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

所以只需进入父 P 目录并运行:cd

mvn install -pl B -am

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

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

mvn install -pl :B -am

如下所述:


答案 2

假设父 pom.xml 包含 6 个模块,并且您想要运行 ABF

<modules>
        <module>A</module>
        <module>B</module>
        <module>C</module>
        <module>D</module>
        <module>E</module>
        <module>F</module>
  </modules>

1- cd 进入父项目

 mvn --projects A,B,F --also-make clean install

mvn -pl A,B,F -am clean install

mvn -pl A,B,F -amd clean install

注意:使用 -am 选项指定项目时,Maven 将生成指定项目所依赖的所有项目(直接或间接)。Maven 将检查项目列表并沿着依赖关系树向下走,找到它需要构建的所有项目。

虽然 -am 命令使多模块生成中特定项目所需的所有项目,但 -amd--also-make-depends 选项将 Maven 配置为生成项目以及依赖于该项目的任何项目。当使用--also-make-depends时,Maven将检查我们反应堆中的所有项目,以找到依赖于特定项目的项目。它将自动构建这些项目,而不是其他任何内容。


推荐