如何在 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的主要内容,如果未能解决你的问题,请参考以下文章
Maven 多模块web项目如何集成到tomcat里面去 然后怎么运行?