避免 Jenkins 不必要的 IVY 快照发布

Posted

技术标签:

【中文标题】避免 Jenkins 不必要的 IVY 快照发布【英文标题】:Avoiding unnecessary IVY snapshot publication from Jenkins 【发布时间】:2016-12-10 19:31:02 【问题描述】:

我们有一个由 75 个独立模块组成的项目。这些模块中的每一个都有自己的 ivy.xml 文件,其中包含第 3 方和内部模块依赖项。我们目前正在使用 Jenkins 和 IVY 插件来轮询 SCM 并将人工制品构建/发布到 ivy。麻烦的是,我注意到有关模块发布的问题,我想尝试了解有关快照发布的正确方法。

如果人工制品 B 依赖于 A 并且对 A 进行了更改,那么我需要通知 B 并触发构建。如果 B 编译,但 B 的代码没有更改,那么我会说 B 不需要发布新的快照工件?

鉴于 SVN 的结帐发生在 IVY 插件运行之前,我想了解的是您是如何执行此操作的。当为模块调用 build.xml 时,它只是运行 compile/jar/publish 到 IVY。只是想知道是否有一种方法可以检测到不需要 IVY 发布?

【问题讨论】:

【参考方案1】:

快照构建的问题在于它们不断变化。您依赖于版本 1.0-SNAPSHOT,但在底层有多个该依赖项的副本,并带有时间戳。这意味着具有快照依赖项的项目实际上应该无论如何都应该构建,至少测试会运行并且您会知道一切仍在工作。

在一天结束时,我不会为大量“不必要的”快照修订而烦恼。大多数存储库管理器都能够清除旧的快照版本,从而使您可以控制存储空间。

希望这会有所帮助。

【讨论】:

我们特意使用 1.0-SNAPSHOTS 以避免对 jar 进行大量修改。 @Juckky 是的,快照修订版在不断变化。这意味着任何依赖于它们的东西都可能受到影响,这大概就是它们被重建的原因。

以上是关于避免 Jenkins 不必要的 IVY 快照发布的主要内容,如果未能解决你的问题,请参考以下文章

Grails:使用快照依赖项离线工作

Jenkins Ivy 插件:寻找错误的 ivy.xml 文件

Jenkins:Ivy build 随机触发其他项目

代理防火墙下的 Jenkins 和 Ivy

为啥即使没有 SVN 更改,Jenkins 也会触发 IVY 构建?

在 Jenkins 的 Ant +Ivy 项目中构建错误