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

Posted

技术标签:

【中文标题】在maven中构建模块时如何构建依赖项目【英文标题】:How to build dependent project when building a module in maven 【发布时间】:2014-10-18 06:57:38 【问题描述】:

当子项目由 maven 构建时,我如何构建依赖项目。例如,我有 2 个名为 A、B 的项目。项目B取决于项目A。我想在使用maven构建项目B时构建项目A。我该怎么做?

【问题讨论】:

【参考方案1】:

看看这些可以传递给 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 reactor 会自动构建两者。

<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 做吗? 编辑了如何使用多模块项目的答案 答案刚刚被指出为重复问题的答案 (***.com/questions/41849997/…)。对不起,但这个答案不是很清楚......答案中引用了amd,但未在依赖多模块概念的建议解决方案中使用。您应该删除对amd 的引用,或者解释为什么它在这种情况下不适用,否则可能会产生误导。

以上是关于在maven中构建模块时如何构建依赖项目的主要内容,如果未能解决你的问题,请参考以下文章

多模块项目构建期间模块之间的 Maven 依赖关系解析

如何解决多模块项目中模块之间的依赖关系?

Maven 和依赖模块

Maven插件作为多模块项目中的依赖项

使用maven搭建多模块项目

如何让 IntelliJ IDEA 从 Maven 更新我的依赖项?