几周前,我们发布了Apache Ivy的2.5.0-rc1版本。 Apache Ivy是一个依赖项管理构建工具,通常与Apache Ant结合使用。 可在项目下载页面上下载
自Apache Ivy的上一版本于2014年12月发布以来,此版本具有重要意义。距上一个正式年份已超过3年。 在过去的几年中,项目开发停滞了一段时间。 我在某些项目中使用Apache Ivy,并且对该工具非常满意。 看到您的一个频繁使用的工具不再处于开发状态甚至没有错误修复,绝不是一个好兆头。 大约一年前,我决定为该项目提供一些错误修复。 随着时间的流逝,项目管理委员会邀请我加入团队。
我们决定,第一个显而易见的近期目标是恢复该项目并进行包含错误修复的正式发行。 这个2.5.0-rc1是从将近一年前开始的努力的结果。 此发行版进行了许多更改,并且对该发行版进行了大量增强。 此版本是社区中不同成员的贡献的结果。 此处提供发行说明的完整列表
我们特意命名此版本2.5.0-rc1(候选版本),因为我们已经完成了一段时间正式发布,并且还给出了更改的性质。 请尝试此版本,让我们知道它的进展。 根据反馈,我们将发布2.5.0或2.5.0-rc2。 和往常一样,我们开发团队中的一些人在常春藤用户邮件中保持活跃状态
清单 。 因此,如果您有任何反馈或疑问,请在此给我们发送邮件。
现在介绍此版本中的一项增强功能-不止一个。 我个人遇到的问题之一是,如果存储库(支持为Ivy配置的依赖项解析器)存在一些连接性问题,则构建会挂起。 这是由于无法指定适当的超时来通过解析器与这些存储库进行通信。 从此版本开始,Ivy现在允许您为解析器配置超时。 这是通过使用Ivy设置文件中的(新)timeout-constraints元素完成的。 关于它的更多细节是
在这里 。 假设您有一个指向某些URL的URL解析器。 URL解析器通常如下所示:
<url name="foo">
<ivy pattern=.../>
<artifact pattern=.../>
<artifact pattern=.../>
</url>
现在,让我们尝试为此解析器配置连接超时。 您要做的第一件事是定义一个命名的timeout-constraint,如下所示:
<timeout-constraints>
<timeout-constraint name="timeout-1" connectionTimeout="60000" />
</timeout-constraints>
name属性的值可以是您选择的任何值。 connectionTimeout属性的值表示为超时(以毫秒为单位)。 在上面的示例中,我们将“ timeout-1”超时约束配置为1分钟。 您甚至可以指定一个以毫秒为单位的readTimeout。 有关此元素的更多信息,请参见
文件 。
您可能会注意到,我们在这里刚刚定义了超时约束,但尚未指示Ivy将此约束用于某些解析程序。 我们在下一步中执行此操作,在此步骤中,我们在之前看到的URL解析器上设置了“ timeoutConstraint”属性:
<url name="foo" timeoutConstraint="timeout-1">
<ivy pattern=.../>
<artifact pattern=.../>
<artifact pattern=.../>
</url>
请注意,“ timeoutConstraint”属性的值现在指向“ timeout-1”,我们将其定义为具有1分钟的连接超时。 这样,当Ivy选择此URL解析器进行依赖关系解析时,将强制执行此连接超时,如果在该超时时间内无法建立连接,则会引发异常,而不是将构建永久挂起。
尽管该示例使用URL解析器来设置超时约束,但是该功能可用于Ivy开箱即用的所有解析器。 因此,您甚至可以将其与ibiblio解析器(与Maven Central进行通信)一起使用。
就像我之前提到的,请尝试尝试此版本,并让我们知道它的进展。