我们有 Java 项目,我们应该只交付已更改的工件,但同时拥有包含未更改组件的最新发布版本和此版本中已更改组件的产品。我们使用 Maven 3 进行构建。
让我们看看我们是否有产品 1.1-SNAPSHOT(意味着它正在开发中),其中 6 个组件都有自己的发布版本。
现在如果将具有如下结构:
- c1 - 1.0-SNAPSHOT
|- m1 - 2.0-SNAPSHOT
|- m2 - 3.0-SNAPSHOT
- c2 - 4.0-SNAPSHOT
|- m3 - 5.0-SNAPSHOT
|- m4 - 6.0-SNAPSHOT
其中 c 是父组件,m 是模块。版本是随机拍摄的。可能存在一些依赖关系,例如 m4 依赖于 m2。
假设我们已经更新了 m2 模块并且我们想要发布它。我们怎么做?仅手动启动 m2 和 m4 模块的发布过程?什么标签问题也出现了?我想它应该是包含新版本的整个产品,用于标记刚刚发布的模块和未更新模块的源版本。
接下来我们想要创建产品发布包,它将是 1.1 版本,其中包括 m1(可以是 0.99)和 m3(可以是 4.99)的最新发布版本,可以从产品的 1.0 版本中获取他们没有改变。m2(它将是 3.0)和 m4(它将是 6.0)的新发布版本也应该是 1.1 包的一部分。怎么做?
我看到的唯一解决方案是使用 maven-version-plugin,但它需要在此过程中进行多次 hack 开发。
我们的想法是构建最少的版本,并且刚刚发布了已更改的模块。
什么 Maven 可以自动提供这个?Maven-release-plugin 在这个级别没有帮助。刚刚更改的组件如何发布?我开始想也许我们不需要使用 SNAPSHOT 来支持这种意识形态。
谢谢你。