ans*_*elm 6 java svn hudson maven maven-release-plugin
我最近发布了一个maven项目,并且无法停止认为整个过程非常复杂且容易出错.假设我有一个应用程序,它包含3个模块A,B和C,每个模块在subversion中都有自己的文件夹,在Hudson中有一个单独的构建作业.每个模块都有一个父POM,它聚合了多个工件.A依赖于B,B依赖于C.依赖版本在顶级POM D中定义,它是A,B和C的父级.除了确保所有版本都保存在一个地方之外别无其他整个项目中使用的每个工件只有一个版本.为了进行发布,我执行以下操作:
之后,我在A,B和C中拥有所有工件的稳定非快照构建,并且可以将它们组合在一起,形成应用程序的最终稳定版本.
实际上,我不仅有3个,而且还有20个这样的模块.现在我发现这个程序非常复杂,我认为它有很多潜在的问题:
我需要多次释放D,一次为依赖层次结构中的每个级别.最后我有D只有稳定版本的A,B和C.为了继续下一个开发版本,我必须再次编辑D并引用已发布模块的所有新快照版本.通常,即使使用发布插件,依赖管理也必须手动完成.
如果有人在我正在发布时提交它可能会搞砸事情.为了确保我必须检查所有模块的特定修订,构建并测试它,然后为该修订版上的所有模块执行发布.但是,如何确保Hudson和多个工作?
取决于3个不同的系统:Subversion服务器,Hudson服务器和Maven存档服务器.如果只有一个失败,我就不能再释放了.
耗时的.在这个过程中,我发布的每个模块都会反复进行大量的构建,打包,上传,下载,提取等工作.发生了大量与存档的冗余数据交换.但实际上一切都可以在本地完成,因为Hudson拥有它需要的所有源代码.最后一次需要上传最终的包.
假设我松开了存档服务器上的软件包.没有简单的方法可以告诉Hudson检查标记的版本并按正确的顺序重建它们.
为什么这不像一次性检查所有代码,调整一个全局版本,构建和测试它,提交,标记提交以及最终上传二进制文件一样容易?
感谢您的任何想法.
事情就是这么简单。使用父 pom,您可以让所有模块都指向同一个父模块。然后将子模块版本设置为:${version.properties},当您运行构建时使用mvn -Dversion.properties x.y.x-SNAPSHOT(对于开发)或x.y.z对于生产构建运行它,那么所有模块都将使用相同的版本立即部署。
因此,对于自动构建,要在 settings.xml 中指定<version.properties>1.1.1-SNAPSHOT</version.properties>,然后,如果您需要已发布的产品,请在运行时指定附加参数,以-Dx.y.z覆盖 settings.xml 文件。
唯一的技巧是你的父 pom 需要有一个非动态指定的版本,并且也需要在所有子文档中设置。因此,在每次发布之后,您可能需要手动更新该版本号(尽管可能有一个插件)
| 归档时间: |
|
| 查看次数: |
488 次 |
| 最近记录: |