使用本地父pom进行Maven多模块项目部署

问题描述 投票:0回答:1

在部署和发布使用该父级 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 作为子模块,而不是。

java maven deployment pom.xml
1个回答
0
投票

如果父 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

© www.soinside.com 2019 - 2024. All rights reserved.