ivy - 带有 ivy 的最新稳定版本,不包括 alpha 和 beta 版本

标签 ivy

对于我们的项目,我们希望大多数依赖自动更新,因此我们希望使用 IVY 中的最新策略。但是,我们不想运行依赖项的最前沿,即。 alpha 和 beta 版本。

使用时:
<dependency org="org.apache.httpcomponents" name="httpclient" rev="latest.revision" />
或者
<dependency org="org.apache.httpcomponents" name="httpclient" rev="latest.release" />
我们得到修订版 4.4-alpha1
这是可以理解的,因为我们使用 ibiblio 解析器,它在 maven-metadata.xml 中包含以下 xml <metadata> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <versioning> <latest>4.4-alpha1</latest> <release>4.4-alpha1</release> <versions> <version>4.0-alpha1</version> <!-- snip ---> <version>4.3-alpha1</version> <version>4.3-beta1</version> <version>4.3-beta2</version> <version>4.3</version> <version>4.3.1</version> <version>4.3.2</version> <version>4.3.3</version> <version>4.3.4</version> <version>4.3.5</version> <version>4.4-alpha1</version> </versions> <lastUpdated>20140801101402</lastUpdated> </versioning> </metadata>
元数据将 alpha 版本表示为发行版和最新版。 (不确定这是否相关)

在这种情况下,我们希望在元数据列表中获得一个版本 4.3.5
现在 Ivy 有一个结构,但是文档非常稀疏,我无法弄清楚如何使这个策略“忽略”alpha 版本。

我尝试了以下变体但无济于事(使用 rev="latest.test" ):
`








编辑:
来自org.apache.ivy.plugins.latest.LatestRevisionStrategy的源代码似乎特殊含义无法解决这个问题,因为版本首先被分成几部分,然后在一个部分的基础上进行比较。

如果有办法禁止包含特定字符串的修订,我的问题也将得到解决。
`

最佳答案

org.apache.ivy.plugins.latest.LatestRevisionStrategy 的源代码表明,在latestStrategy 元素中使用具有特殊含义的字符串来解决这个问题是不可能的。 (感谢:this post)

我们最终使用版本匹配器来强制 ivy 不使用 -beta- 或 -alpha 版本。
它不是最佳解决方案,正则表达式可能还需要更新几次。

在 ivysettings.xml 中:

<version-matchers usedefaults="true">
    <pattern-vm name="lastest.nobeta">
        <match  revision="latest.nobeta" pattern="\.*\d+\.\d+\.?\d*(FINAL|RELEASE|STABLE)?"  matcher="regexp" />
    </pattern-vm>
</version-matchers>

在 ivy.xml 中:
<dependency org="org.apache.poi" name="poi" rev="latest.nobeta"/>

不完全确定这是否需要最新版本,但到目前为止似乎是这样。

关于ivy - 带有 ivy 的最新稳定版本,不包括 alpha 和 beta 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25549166/

相关文章:

unit-testing - 使用 IVY 解析器进行 Grails 2.3 单元测试

java - 使用 Ivy 指定传递依赖关系

scala - 如何添加SBT解析器(服务器端)

尽管 jar 在 ~/.ant/lib 中,但 Ant 找不到 Ivy jar

scala - Logback 依赖性阻止 SBT 离线运行

java - 在 Ivy 检索中忽略源 jar

java - Ant Ivy 依赖解析

Gradle 在 ~/.ivy2/local 中找不到我的依赖项

java - Artifactory 如何管理 repo 协议(protocol)

java - apache Ivy 身份验证与 Artifact