摇篮依赖版本的“+”号(Gradle dependency versions '+'

2019-08-17 01:37发布

我想了解摇篮如何处理依赖版本带有“+”号作为例子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]+) 这是正确的思维方式?

Answer 1:

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

我不认为有这个的任何文件,但由于摇篮最初使用的Ivy引擎盖其所有依赖管理功能下,我接过一看就动态版本的常春藤文档:

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

它仅比摇篮文档稍多。 我试着在摇篮常春藤风格的版本范围试验:

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

令人惊讶的是,似乎有时会根据版本的范围是什么工作。 在上面的例子中它解析为1.2.17

我知道这并不能完全解决您的问题(这我感到太奇怪),但希望它提供了一些信息给你。



Answer 2:

我认为这个问题是,你是在错误的正则表达式思维的“+”。 这并不意味着将被读取作为一个正则表达式表达元件(“一个或多个数字字符”),而是作为“最新的可用版本,其中每个前导SEMVER部件的匹配提供的模式”。 :为什么这是不优选甚至使用这个符号引用,可以发现http://central.sonatype.org/articles/2014/Oct/28/enforcing-valid-dependency-versions/



文章来源: Gradle dependency versions '+' sign
标签: gradle