【发布时间】:2012-08-02 14:15:06
【问题描述】:
如果其中一个子模块有分类器,你如何发布一个 maven 多模块项目?
鉴于此用例:
- 多模块项目:EAR、WAR、interface-jar、extension-AA-jar、extension-BB-jar、utility-jar
- 所有 JAR 只能构建一次(或至少只部署一次到存储库,因为禁止部署具有相同版本的相同工件)
- 必须为两种不同的设置构建 WAR,一次使用 extension-AA-jar,一次使用 extension-BB-jar
- 只有单个 extension-XX-jar 使这两个版本有所不同
- 我想通过分类器 (AA|BB) 区分存储库中的两个最终工件
- 还应该有两个 EAR,只包含一个 WAR(也由同一分类器标识)
- 我不想要两个 WAR/EAR 的额外项目,因为内容会 100% 相同。
所以目标是最后在存储库中包含以下内容(经过两次发布:准备,发布:执行):
- EAR-1-AA.ear
- EAR-1-BB.ear
- WAR-1-AA.war
- WAR-1-BB.war
- interface-1.jar
- extension-1-AA.jar
- extension-1-BB.jar
- utility-1.jar
关于如何进行发布构建有很多解释,也有如何使用分类器的示例 - 但分类器似乎从未在多模块设置中使用。
注意:第一个版本通常不会成为问题,因为尚未部署新版本的工件。但是为第二个分类器发布会破坏整个事情,因为 maven 会尝试使用相同的版本再次构建和部署 jars,并且存储库将(希望)不允许它。这对于 WAR 和 EAR 来说不是问题,因为会考虑分类器来唯一标识工件
或者分类器真的只适用于单模块项目吗?
【问题讨论】:
标签: maven release maven-release-plugin