Gradle依赖版本'+'符号

时间:2013-02-20 12:27:13

标签: gradle

我试图了解Gradle如何使用'+'符号处理依赖版本,如下面的示例8.1所示: http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html

testCompile group: 'junit', name: 'junit', version: '4.+

文档说明这将获得junit> = 4.0的版本。如何获得一个大于(或等于)依赖的版本,比如5.10?会是5.10+还是5.1+?前者似乎不能正常工作,但后者确实如此。如何获得大于或等于1.22的依赖? 1.2+?在这种情况下,如果版本1.21存在并且是最新版本,我想失败,因为我想要大于或等于1.22,但1.2+将寻找> = 1.20。我怎么指定这个?这可能吗?我似乎无法找到更多关于它的文档。

编辑:我倾向于将其视为1.2+等同于1.2([0-9]+)。这是正确的思考方式吗?

2 个答案:

答案 0 :(得分:23)

  

在这种情况下,如果版本1.21存在并且是最新版本,我   我想失败,因为我想要大于或等于1.22,但是   1.2+将寻找> = 1.20。我怎么指定这个?这可能吗?

我认为没有任何关于此的文档,但是由于Gradle最初使用Ivy进行所有依赖管理功能,我看了一下有关动态版本的常春藤文档:

http://ant.apache.org/ivy/history/latest-milestone/ivyfile/dependency.html

它只比Gradle文档略多。我尝试使用常春藤风格的版本范围在Gradle中进行实验:

compile group: 'log4j', name: 'log4j', version: '[1.2.12,1.2.17]'

并且令人惊讶地似乎有时的工作取决于版本范围。在上面的示例中,它解析为1.2.17

我知道这并没有完全解决你的问题(我也很好奇)但希望它能为你提供一些信息。

答案 1 :(得分:1)

我认为问题在于你错误地想到了" +"就正则表达而言。它并不意味着被读作正则表达式表达元素("一个或多个数字字符"),而是作为"最新的可用版本,其中每个主要的SEMVER组件都匹配模式提供"。有关为何不使用此表示法的参考资料,请参阅:http://central.sonatype.org/articles/2014/Oct/28/enforcing-valid-dependency-versions/

相关问题