运行 mvn install 时构建兄弟项目
Posted
技术标签:
【中文标题】运行 mvn install 时构建兄弟项目【英文标题】:Build sibling projects when running mvn install 【发布时间】:2019-04-24 02:31:30 【问题描述】:我们有一个项目最近从 ant 和糟糕的 CLI 工具切换到了 maven, 我们目前的结构是:
- parent
- main-project:
- sub-module-A:
- sub-module-B:
这些项目中的每一个都在它自己的存储库中,它们通过 pom 文件链接 parent 在标签中定义了所有三个项目,而 main-project 将两个子模块都定义为依赖项。
手头的问题:
由于主项目是我部署站点的位置(在这种情况下),我想确保在运行它时更新两个模块的源代码,这意味着当我运行 mvn install
时我想编译两个子模块主项目。
我尝试使用 mvn-exec-plugin 来构建两者,但它实际上并没有构建任何东西。
知道如何解决这个问题吗?
编辑:我正在从main-project
运行mvn appengine:run
,并希望在需要时安装子模块 A 和 B 的源代码
【问题讨论】:
你是否在Maven命令中执行site
阶段,例如mvn install site
?
执行appengine:run
appengine:run
是 Maven 所说的目标,其中 install
和 site
是阶段。阶段可以配置为以特定顺序运行多个目标。您可能需要弄清楚如何将appengine:run
绑定到应用程序的 POM 中,以便它在较大阶段的适当位置运行,或者可能运行多个 Maven 命令(例如mvn appengine:run site
)。谷歌'maven生命周期'了解更多细节,文档很不错。我对 appengine 插件了解不够,无法提供更多指导。
【参考方案1】:
假设您的main-project
依赖于sub-module-A
和sub-module-B
,并且父级将所有项目都作为模块,即。 e.
父母
<modules>
<module>main-project</module>
<module>sub-module-A</module>
<module>sub-module-B</module>
<modules>
主项目
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>sub-module-A</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>sub-module-B</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
然后,您可以使用
构建parent
项目
mvn --projects :main-project --also-make install
或使用选项的快捷方式
mvn -pl :main-project -am install
使用这些选项,仅构建 main-project
及其所有依赖项(位于 parent
的模块中的某处)。
请参阅this 和this 了解更多信息。
【讨论】:
问题是我可以从main-project
运行appengine:run
并安装子模块A和B吗?以上是关于运行 mvn install 时构建兄弟项目的主要内容,如果未能解决你的问题,请参考以下文章
Run “mvn clean install” in Eclipse