首页 > 解决方案 > 跳过已经发布到 Maven Central 的 Maven 模块

问题描述

假设我有一个聚合的 Maven 项目。com.example:foo:1.0.0是聚合的父 POM,它包含子项目com.example:bar:2.0.0。我使用nexus-staging-maven-plugin. 请注意,即使它是一个子项目,我也没有在父 POM 中对 的版本使用依赖管理。com.example:bar:2.0.0也就是说,这两个版本没有捆绑在一起。

我也在com.example:foo:1.0.0其他项目中用作父 POM,所以我希望它的坐标不会发生不必要的变化(例如,使用不同的坐标多次发布,即使内容没有改变)。

事实证明,com.example:bar:2.0.0变化相当频繁,所以我想发布com.example:bar:2.1.0. 但我将从该存储库中的聚合父 POM 构建,com.example:foo:1.0.0. 我是否也必须增加父 POM 的版本,即使父 POM 没有更改,即使这些版本没有以任何方式相互关联?我宁愿nexus-staging-maven-plugin简单地意识到com.example:foo:1.0.0已经发布,跳过它,然后继续并发布com.example:bar:2.1.0

这个问题也延伸到已经发布的兄弟模块。有没有办法配置nexus-staging-maven-plugin跳过已经发布的模块,但继续构建和发布尚未发布的其他兄弟项目?

从这个简化的例子中,我相信有人会很想回答,“但你不应该那样做”。在我的更复杂的例子中,有一些原因可能像我解释的那样这样做是有利的;此外,该响应仍然会使实际问题未得到回答。

我也意识到我可以做一些测试来看看会发生什么,也许我会,但我在这里发布问题是为了 1)获得权威答案,2)促进对选项的讨论,以及 3)留下一些明确的答案在这里为其他可能有同样问题的人。谢谢你。

标签: mavenpom.xmlparent-pom

解决方案


AFAIK,nexus-staging-maven-plugin没有用户属性来分离或忽略某些工件。

您也许可以编写自己的插件来获取 Maven 项目并从中消除某个工件。


推荐阅读