如何在 Maven 多模块项目中仅运行父 pom.xml

Posted

技术标签:

【中文标题】如何在 Maven 多模块项目中仅运行父 pom.xml【英文标题】:how to run only parent pom.xml in maven multi-module project 【发布时间】:2011-06-16 06:15:45 【问题描述】:

我有 Maven 多模块项目。在父级,我有一些 java 文件。在父 pom.xml 中,在打包阶段我做了一些事情。

通常,当我在父级别运行 mvn package 时,将运行父 pom 的打包阶段,并且所有模块也将被打包。

我正在寻找一种允许我执行这些操作的方法(当我运行 mvn 包时):

允许我只运行 paren pom.xml(打包阶段的脚本),而不是模块。这是第一要务。 允许我运行 paren pom.xml 和一些特定模块(如模块 1、模块 2 但不是模块 3、模块 4)。

我可以使用配置文件来解决这些问题吗?

谢谢。

【问题讨论】:

【参考方案1】:

看看Maven parent pom vs modules pom

您的问题的性质表明您的项目结构可能不是最佳的。

【讨论】:

【参考方案2】:

为什么要在顶层有 java 代码?在我看来,这不是一个好主意。将代码放在子项目中,让顶层项目负责保存整个项目的一般信息和配置。

如果你现在在顶层项目中有一些基础库代码,你可以把它放在一个子项目中,并设置项目之间的依赖关系。

【讨论】:

我有几个多模块项目,其中站点文档位于项目根目录的 /src/site/markdown 中(与父 pom 级别相同)。能够运行“mvn site -N”意味着我可以迭代渲染的文档,而无需构建每个子模块。【参考方案3】:

虽然我同意您可能没有最佳项目结构这一事实,但答案是 Maven 2.2.1 有一个选项“--non-recursive”可以满足您的第一个要求:

-N,--non-recursive    Do not recurse into sub-projects

所以是这样的:

mvn --non-recursive clean compile 

【讨论】:

以上是关于如何在 Maven 多模块项目中仅运行父 pom.xml的主要内容,如果未能解决你的问题,请参考以下文章

具有父 POM 的多模块项目的 Maven 版本控制

Maven 多模块web项目如何集成到tomcat里面去 然后怎么运行?

maven2多模块父pom丢失

Bamboo - SonarQube 多模块 maven 项目跳过子模块

Eclipse创建Maven多模块工程

Maven管理多模块