有没有办法使用动态修订指定Ivy依赖,但限制状态?

时间:2011-04-08 13:45:38

标签: ivy

我是否可以在限制检索到的工件的状态的同时使用动态修订声明依赖项?例如,我想定义一个版本范围,例如" [1.0,1.1 [",但我不希望工件具有集成状态,只有里程碑或版本。所以我希望版本1.0.5,如果它的状态是"发布"即使版本为1.0.6,状态为"整合。"

我知道最新的。状态,但这不是我想要的:我需要在修订版上定义上限和下限。

2 个答案:

答案 0 :(得分:2)

也许解决方案是定义您自己的版本匹配器,请参阅http://ant.apache.org/ivy/history/latest-milestone/settings/version-matchers.html

我用它(在ivysettings.xml中)来做到这一点:

<!-- Matcher for build with given build number
    It assumes the version number is on the form
    #.#__.# where the lastet '.#' is the build number. -->
<version-matchers usedefaults="true">
    <pattern-vm>
        <match revision="build_number" pattern="[\d\.]+\.${buildnumber}" args="buildnumber" matcher="regexp"/>
    </pattern-vm>
</version-matchers>

<!-- Matcher for build with given build number It assumes the version number is on the form #.#__.# where the lastet '.#' is the build number. --> <version-matchers usedefaults="true"> <pattern-vm> <match revision="build_number" pattern="[\d\.]+\.${buildnumber}" args="buildnumber" matcher="regexp"/> </pattern-vm> </version-matchers>

您可以通过设置版本属性来调用它,例如'revision =“build_number($ {prop.buildnumber})”'

答案 1 :(得分:2)

感谢您提出这个问题,rsteele。我有一个类似的问题,这是我正在使用的解决方案。如果您的范围对应于子修订版,则它可以工作:

最简单的方法是举例:

<dependency org="com.acme" name="wigdet" branch="1" rev="latest.milestone">
  • 1 / ivy-1.0.xml:status =“integration”
  • 1 / ivy-1.1.xml:status =“milestone”
  • 1 / ivy-1.2.xml:status =“integration”

依赖项解析为1.1。

这对我有用,但我对它并不完全满意,我希望有人可以指出更好的方法或在其中挖洞:

  • 分支似乎合适,因为com.acme实际上在版本控制中有一个分支,对应于版本1.
  • 另一方面,
  • 分支似乎不合适,因为“1”是修订的一部分,并且分支在其他方面可能更有用。
  • 这并不能解决rsteele提出的更普遍的问题。