Maven:为什么要部署聚合POM?

Maven:为什么要部署聚合POM?,maven,inheritance,pom.xml,aggregation,Maven,Inheritance,Pom.xml,Aggregation,在我的Maven设置中,我有以下目录结构 . |-- parent | `-- pom.xml |-- module1 | |-- src... | `-- pom.xml |-- more modules... `-- pom.xml 每个模块的pom都有父级/pom.xml作为父级,以重新组合一般信息(例如distributionManagement) 根pom.xml只允许对所有模块进行一键式构建和部署,因此它具有打包pom,并列出所有模块 当我在根pom上调用“deplo

在我的Maven设置中,我有以下目录结构

.
|-- parent
|   `-- pom.xml
|-- module1
|   |-- src...
|   `-- pom.xml 
|-- more modules...
`-- pom.xml
每个模块的pom都有
父级/pom.xml
作为父级,以重新组合一般信息(例如
distributionManagement

根pom.xml只允许对所有模块进行一键式构建和部署,因此它具有打包
pom
,并列出所有模块

当我在根pom上调用“deploy”时,所有的构建和部署都很好,但在最后,根项目本身失败了(因为它缺少
distributionManagement
元素)

为什么Maven要构建和部署根pom?在我看来,这只是构建所有模块的某种捷径。实际上没有什么可部署的,或者其中没有与项目相关的数据

我可以也应该避免部署pom吗


注意:向根pom添加
distributionManagement
的解决方法,或者让根pom本身从父级继承/pom.xml是构建问题的解决方案-我现在更感兴趣的是了解这是否真的有必要以及原因。

当您在该级别运行mvn clean deploy时,您会告诉maven构建该项目pom。它恰好包含子模块,所以您不应该(我也不知道有什么方法)避免部署该POM


只需使pom从父级继承,并使所有子模块从该pom继承,而不是直接从父级继承

当您在该级别运行mvn clean deploy时,您会告诉maven构建该项目POM。它恰好包含子模块,所以您不应该(我也不知道有什么方法)避免部署该POM


只需使pom从父级继承,并使所有子模块从该pom继承,而不是直接从父级继承

如果您的根pom不在功能模块的祖先中(即您的父代没有根作为其父代),那么您可以通过在根pom中将
maven.deploy.skip
属性设置为
true
来跳过聚合器的部署

这样,根目录的部署将被跳过(不过它仍然是“构建的”)


但是,我也会简单地部署它。给它一些有意义的完整坐标(我们只使用类似于
com.mycorp.aggregator:xy aggregator:0-SNAPHSHOT
)。快照版本很重要,因为否则,您的工件库将阻止重复构建。

如果您的根pom不在功能模块的祖先中(即,您的父代没有根作为其父代),然后,通过在根pom中将
maven.deploy.skip
属性设置为
true
,可以跳过聚合器的部署

这样,根目录的部署将被跳过(不过它仍然是“构建的”)

但是,我也会简单地部署它。给它一些有意义的完整坐标(我们只使用类似于
com.mycorp.aggregator:xy aggregator:0-SNAPHSHOT
)。快照版本很重要,因为否则,您的工件存储库将阻止重复构建