带有 pom 包装的 Maven 子模块?
Posted
技术标签:
【中文标题】带有 pom 包装的 Maven 子模块?【英文标题】:Maven submodule with pom packaging? 【发布时间】:2015-11-15 07:05:56 【问题描述】:有一个 maven 子模块(它本身没有任何子模块)有一个 pom
包装有意义吗?
在某些情况下这样做有什么用吗?
如果不是,这是否意味着我所有的最后一级子模块都应该有一个不是 pom
的包装?
【问题讨论】:
【参考方案1】:通常,包装有一定的生命周期,例如“jar”打包将在“编译”阶段等运行maven-compiler-plugin。
如果您选择“pom”,则默认生命周期非常有限 - 我猜只有“安装”和“部署”插件绑定到各自的阶段。如果您想更好地控制构建中发生的事情,您可能会使用它。
通常,您只会对聚合器模块(具有子模块的那些)使用“pom”包装。
有关包装和 Maven 生命周期的更多详细信息,您可以参考Maven: The Complete Reference - 4.2. Package-specific Lifecycles
作为我在子模块中实际使用“pom”包装的现实世界:
在一些项目中,我有一个名为“PROJECT-doc”的子模块,其中包含我编译为 html 和 PDF 作为构建的一部分的 asciidoc 文档。这些模块有“pom”包装——没有要编译的Java代码,没有要构建的JAR,也没有要运行的单元测试——只是构建了文档。我手动将“asciidoctor-maven-plugin”绑定到“generate-resources”,就是这样。
【讨论】:
典型的用例是通过 maven-assembly-plugin 创建分发档案......【参考方案2】:我认为主要问题是在 maven 中使用包装 pom
- 这个问题在这里得到了回答:What is "pom" packaging in maven?
简短的形式是:是的,你不应该有一个模块没有使用包装pom
的子模块。
【讨论】:
以上是关于带有 pom 包装的 Maven 子模块?的主要内容,如果未能解决你的问题,请参考以下文章
Maven 相同的聚合器和父级(相同的 pom)。独立子模块版本
Bamboo - SonarQube 多模块 maven 项目跳过子模块
使用 mvn release:prepare,是不是可以指示 Maven 在提交命令的子模块 pom 位置中使用正斜杠?