在部署和发布使用该父级 pom 的工件时,我有一个关于使用本地父级 pom 的问题。
想象以下多模块 Maven 项目:
- pom.xml (Aggregator)
|
-- Submodule 1
|
--- pom.xml
|
-- Submodule 2
|
--- pom.xml
|
-- parent
|
--- pom.xml
现在,我在子模块 1 和子模块 2 中使用parent/pom.xml 作为父模块(带有相对路径!)。在聚合器 pom 中,我们定义了这两个子模块。
如果我们现在尝试使用
mvn deploy
部署它们,我们将面临错误,即父 pom 在 Maven Central 中不可用。好的。但是:如果我将parent/pom.xml 作为子模块添加到聚合器中,则部署可以正常工作。 (其他没有改变)
因为我真的很喜欢理解这种行为,以考虑可能的优点和缺点,如果有人能解释一下,我将不胜感激:-)
谢谢!
我尝试了我提到的,包括父 pom.xml 作为子模块,而不是。
如果父 POM 没有作为子模块出现在聚合器 POM 中,则实际上不会构建/部署它。因此,当maven想要上传子模块时,它会注意到父POM丢失并且maven中止。
将 Parent POM 集成为模块的解决方案可以避免此错误。然而,这仍然不是您通常解决问题的方式。
默认情况下,您的项目结构应如下所示:
parent
|-- submodul-1
|-- submodul-2
|-- submodul-3
参见示例:https://maven.apache.org/guides/mini/guide-multiple-modules-4.html