如何在Maven构建模块时构建依赖项目

24

当使用Maven构建子项目时,如何同时构建依赖项目。例如,我有两个项目A、B,项目B依赖于项目A。我想在构建项目B时自动构建项目A。应该如何操作?

1个回答

26

看一下可以传递给mvn的这些选项:

Options:
 -am,--also-make                        If project list is specified, also
                                        build projects required by the
                                        list
 -amd,--also-make-dependents            If project list is specified, also
                                        build projects that depend on
                                        projects on the list

我认为在你的情况下,你需要使用-amd。

编辑: 如果你需要通过pom文件来执行操作,你只需要创建另一个模块,比如说C,将子模块A和B列出即可。当你构建C时,Maven反应堆将自动构建这两个子模块。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.test</groupId>
  <artifactId>ParentModuleC</artifactId>
  <packaging>pm</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>ParentModuleC</name>
  <dependencies>
  </dependencies>
  <build>
  </build>
  <modules>
    <module>ModuleA</module>
    <module>ModuleB</module>
  </modules>
</project>
在 ModuleA 和 B 中,您需要添加以下内容:
<parent>
    <groupId>com.test</groupId>
    <artifactId>ParentModuleC</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

你的目录结构将看起来像这样:

ParentModuleC
    |-pom.xml
    |----------->ModuleA
    |               |->pom.xml
    |----------->ModuleB
    |               |->pom.xml

看这个简单的例子: http://books.sonatype.com/mvnex-book/reference/multimodule.html


我可以用POM做吗? - Anushka Ekanayake
编辑了如何使用多模块项目来完成它的答案。 - Yogesh_D
2
答案刚刚被指定为重复问题的答案 (http://stackoverflow.com/questions/41849997/make-maven-use-the-current-code-and-not-the-installed-version-when-compiling-chi)。很抱歉,但这个答案不是很清楚... 答案中提到了 amd 但在依赖于多模块概念的提议解决方案中并没有使用。你应该要么删除对 amd 的引用,要么解释为什么它在这种情况下不适用,因为否则可能会误导。 - davidxxx

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