假设我有一个聚合Maven项目。 com.example:foo:1.0.0
是聚合父POM,它包含子项目com.example:bar:2.0.0
。我使用nexus-staging-maven-plugin
将它们发布到Maven Central。请注意,我不在父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)留下一些明确的答案对于其他可能有相同问题的人。谢谢。
AFAIK,nexus-staging-maven-plugin
没有用户属性来分离或忽略某些工件。
您可以编写自己的插件来获取Maven项目并从中消除某些工件。