我发现了很多关于maven-release-plugin
、多模块、多项目、父 POM 等的提示,但它们都不太适合我所拥有的:
我有几个项目(简化的情况是两个:project-common
和project-impl
),它们彼此有些分开,并在单独的 git 存储库中开发,但通常一起发布。为此,project-common/pom.xml
包含:
<groupId>de.tarent.example</groupId>
<artifactId>project-common</artifactId>
<version>1.5.1.4-SNAPSHOT</version>
…并project-impl/pom.xml
包含:
<groupId>de.tarent.example</groupId>
<artifactId>project-impl</artifactId>
<version>1.5.1.4-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>de.tarent.example</groupId>
<artifactId>project-common</artifactId>
<version>${project.version}</version>
</dependency>
没有父POM。
这里的想法是一般都使用 的版本project-common
,但偶尔可以只发布一个项目的单独版本;在这些情况下,依赖版本当然必须手动更改,但这没关系。
现在,我们正在使用 Jenkins 的“执行 Maven 发布”来创建我们的发布。(嗯,我们希望。这些项目直到最近才发布,所以我们的开发人员手工构建了它们,包括临时文件、未使用的文件、本地更改、XML 配置中的 LDAP 密码、编辑器.swp
文件等——你可以明白为什么尽管不了解 Java™ 、 Maven或Jenkins,但我的任务是改变这一点。或者也许是因为它。)
发布project-common
顺利,但project-impl
在第一阶段失败,检查没有 SNAPSHOT 依赖项。嗯嗯。(除了那个之外没有其他的project-common
。)覆盖maven-release-plugin
以跳过 SNAPSHOT 检查是不可能的。在这里使用父 POM 也不起作用,因为它们是完全独立的存储库,有时会独立发布。那么,如何在保持 Jenkins 和 Maven Release 舒适的同时做到这一点呢?
继续:回答您自己的问题 - 分享您的知识,问答式...</p>