在我的Maven设置中,我有以下目录结构
.
|-- parent
| `-- pom.xml
|-- module1
| |-- src...
| `-- pom.xml
|-- more modules...
`-- pom.xml
每个模块的pom都有parent/pom.xml
作为父级,重新组合一般信息(例如distributionManagement
)
root pom.xml只允许一键构建&部署所有模块,因此它具有打包pom
并列出所有模块。
当我致电"部署"在根pom上,所有构建和部署都很好,但最后,根本项目本身失败(因为它没有distributionManagement
元素)。
为什么Maven想要构建和部署根pom?根据我的理解,它只是构建所有模块的某种捷径。实际上没有什么可以部署或没有项目相关数据。
我可以而且应该尽量避免部署那个pom吗?
注意:将distributionManagement
添加到根pom或使root pom继承自parent / pom.xml的解决方法是构建问题的解决方案 - 我现在对此更感兴趣了解这是否真的有必要以及为什么。
答案 0 :(得分:2)
如果您的根pom在您的功能模块的祖先中没有(即您的父级没有root作为其父级),那么您可以通过将maven.deploy.skip
属性设置为{{1来跳过聚合器的部署在你的根pom里面。
这样,将跳过root的部署(但它仍然是“构建的”)。
但是,我也会简单地部署它。给它一些有意义的坐标(我们使用true
之类的东西)。 SNAPSHOT版本很重要,因为否则,您的工件存储库会阻止重复构建。
答案 1 :(得分:1)
当您在该级别运行mvn clean deploy时,您要告诉maven构建该项目POM。它恰好包含子模块,所以你不应该(并且我不知道一种方法)避免部署那个POM。
只需让pom从父级继承并使所有子模块继承自该POM而不是父级。