带有 pom 包装的 Maven 子模块?

Maven submodule with pom packaging?

有一个 Maven 子模块(它本身没有任何子模块)有一个 pom 包装有意义吗?

在某些情况下这样做有什么用吗?

如果不是,是否意味着我所有的最后一级子模块都应该有一个不是 pom 的包装?

我认为主要问题是在 Maven 中使用包装 pom - 这个问题在这里得到了回答:What is "pom" packaging in maven?

简短形式是:是的,你不应该有一个模块 没有 使用包装 pom.

的子模块

通常,包装有一定的生命周期,例如"jar" 打包将 运行 maven-compiler-plugin 在 "compile" 阶段等

如果您选择 "pom",那么默认生命周期非常有限 - 我猜只有 "install" 和 "deploy" 插件绑定到各自的阶段。如果您想更好地控制构建中发生的事情,您可能会使用它。

通常,您只会对聚合器模块(具有子模块的模块)使用 "pom" 打包。

关于打包和Maven生命周期的更多细节,可以参考Maven: The Complete Reference - 4.2. Package-specific Lifecycles

作为我在子模块中实际使用 "pom" 打包的真实世界:

在某些项目中,我有一个名为 "PROJECT-doc" 的子模块,其中包含我编译为 HTML 的 asciidoc 文档和作为构建一部分的 PDF。这些模块具有 "pom" 包装 - 无需编译 Java 代码,无需构建 JAR,也无需 运行 单元测试 - 仅构建文档。我手动将 "asciidoctor-maven-plugin" 绑定到 "generate-resources" 就是这样。