我有两个 Maven 项目project/foo/pom.xml
和project/bar/pom.xml
. 我foo
依赖于bar, and I want that every time
foo/pom.xml compiles, it'll automatically compile
bar`。
我怎么能用 Maven 做到这一点?
更新:我可以将它们都放入父项目中,但是,如果我想mvn jetty:run
在子项目上运行,我该怎么办?
我有两个 Maven 项目project/foo/pom.xml
和project/bar/pom.xml
. 我foo
依赖于bar, and I want that every time
foo/pom.xml compiles, it'll automatically compile
bar`。
我怎么能用 Maven 做到这一点?
更新:我可以将它们都放入父项目中,但是,如果我想mvn jetty:run
在子项目上运行,我该怎么办?
在Jenkins中设置两个构建,它可以检测项目之间的依赖关系
从模块依赖项自动构建链接
Jenkins 从您的 POM 中读取项目的依赖项,如果它们也是在 Jenkins 上构建的,则触发器的设置方式是,其中一个依赖项中的新构建将自动启动项目的新构建。
如果两个 Maven 项目密切相关(一起发布,共享相同的修订号),那么也许它们真的是同一个项目的两个模块?
如果是这种情况,请阅读以下文档以获取有关如何创建父 POM 的指南:
您可以将它们组合成一个具有两个模块的项目。
一个示例项目结构:
父母(pom) |- 富(罐子) |- 条(罐)
在父 pom 中:
<groupId>org.me</groupId>
<artifactId>parent-project</artifactId>
<packaging>pom</packaging>
<modules>
<module>foo</module>
<module>bar</module>
</modules>
在每个子 pom 中:
<artifactId>foo</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>org.me</groupId>
<artifactId>parent-project</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
要使用 Maven 构建项目(两个模块),请从父目录执行:
$ mvn install
单独使用 maven 是不可能的。您可以获得的最接近的方法是将两者都作为聚合器 POM 的模块,因此您可以使用单个命令构建两者。请注意,amvn install
已经考虑自上次构建以来是否发生了更改,因此您在那里节省了一些 CPU 周期。
首先,设置一个多模块构建,如 Daniel 所示。然后切换到父 POM 所在的目录。然后,例如要安装 foo 并在之前自动安装 bar,请键入:
mvn --also-make --projects foo install
这将检查反应器内的依赖关系,然后解析在 bar 上运行安装生命周期,然后再在 foo 上运行安装生命周期。
这适用于任何生命周期或目标。但是请注意,如果您指定 jetty:run,那么这个目标将在两个项目中运行,这可能不是您想要的。
您可以在此处找到有关此功能的更多信息:http ://maven.apache.org/guides/mini/guide-multiple-modules.html