有一个maven子模块(它没有任何自身的子模块)有pom
包装吗?
在某些情况下有没有使用过这种情况?
如果不是,这是否意味着我所有的最后一级子模块都应该有一个不是pom
的包装?
答案 0 :(得分:1)
通常,存在与包装相关的特定生命周期,例如, “jar”包装将在“编译”阶段等运行maven-compiler-plugin。
如果您选择“pom”,那么默认生命周期非常有限 - 我想只有“安装”和“部署”插件才会绑定到各自的阶段。如果你想要更好地控制构建中发生的事情,你可以使用它。
通常,您只会对聚合器模块(具有子模块的模块)使用“pom”打包。
有关包装和Maven生命周期的更多详细信息,请参阅Maven: The Complete Reference - 4.2. Package-specific Lifecycles
作为一个真实的世界,我实际上在子模块中使用“pom”包装:
在某些项目中,我有一个名为“PROJECT-doc”的子模块,其中包含asciidoc文档,我将其编译为HTML和PDF作为构建的一部分。这些模块具有“pom”包装 - 没有要编译的Java代码,没有要构建的JAR,也没有要运行的单元测试 - 只需构建文档。我手动将“asciidoctor-maven-plugin”绑定到“generate-resources”,就是这样。
答案 1 :(得分:0)
我认为主要问题是在maven中使用包装pom
- 这个问题在这里得到了解答:What is "pom" packaging in maven?
简短形式是:是的,你不应该有一个模块没有子模块使用打包pom
。