在多项目环境中独立地对模块进行版本控制并压缩所有依赖项

Posted

技术标签:

【中文标题】在多项目环境中独立地对模块进行版本控制并压缩所有依赖项【英文标题】:Versioning modules independently in multi project environement and zipping all dependencies 【发布时间】:2013-09-28 22:17:35 【问题描述】:

我是 ant 和 Ivy 的新手。我们将 Jenkins 用于 CI,ant 用于构建,Ivy 用于依赖管理。我们有几个生成jar和war的模块/项目,可以独立版本化和发布(并非所有模块都会同时发布),因此需要为每个模块单独维护版本号。我们想使用版本格式 A.B.C.D(例如:1.2.1.2)。我发现我可以使用属性文件输入版本号并使用 ant BuildNumber 任务来增加我们每晚构建的数量。因此,一旦所有功能都进入并经过测试,我们会将最后一个成功的夜间构建移动为新发布的版本,但我们希望更改版本号而不重建它。例如,最后一次成功的构建是 1.2.1.20,它经过了彻底的测试并且具有所有功能,我们必须在不重新构建模块的情况下从 1.2.1.20 构建到 1.3.0.0。我怎么能用蚂蚁做到这一点?而且我还需要将它们发布到我的共享存储库,版本为 1.3.0.0。我该怎么做?

此外,我们希望为每个模块创建一个 zip 文件,其中包含所有依赖文件以及模块的 jar 文件以进行交付。是否有任何 ivy 或 ant 任务可以帮助创建这个?

【问题讨论】:

【参考方案1】:

我想你已经问了两个问题......

通常,我创建的每个版本都是可发布的,因此我总是递增我的发布编号方案中的最后一位数字。为了控制版本号,我更喜欢使用 ivy buildnumber 任务,它会根据之前推送到存储库的内容而增加(非常有用)。

创建一个 zip 包非常简单。只需更改您的 ivy 文件即可发布多个工件。

【讨论】:

最初我的存储库中不会有任何构建,那么 ivy buildnumber 任务如何工作?它使用 1.0.0.0 吗?如何强制它使用 1.2.1.0?你能举个例子吗?另外,对于夜间构建,我希望增加最后一个数字,但对于主要版本,我希望增加第二个数字(即上面示例中的 2)?我该怎么做?另外,您能否提供一个 ivy.xml 文件的示例,该文件将依赖项与构建 jar 一起发布。 这是另一个问题,但最初我们希望将工件发布到我们的测试存储库,一旦测试完成,我们必须将相同的工件复制到发布的存储库。常春藤有什么任务可以帮助解决这个问题吗?对不起,我问了太多问题,我对 Ivy 和 ant 很陌生,只有很短的时间来弄清楚实现最终目标的东西。非常感谢您的帮助。 马克,为了将文件从一个存储库复制到另一个存储库,看起来我可以使用安装常春藤任务。这是正确的吗?

以上是关于在多项目环境中独立地对模块进行版本控制并压缩所有依赖项的主要内容,如果未能解决你的问题,请参考以下文章

追溯性地对应用程序进行版本控制

Flyway 一个模式中的多个元数据表

如何务实地对配置文件进行版本控制?

若依如何区分不同环境下配置文件?

如何在多模块 Maven 项目中自动重用依赖版本?

如何有效地对 SQL 数据库中的记录进行版本控制