2012-04-29 81 views
58

什么是最简单的方法来告诉Gradle以下最新发布的版本:摇篮 - 越来越依赖

检索“JUnit的依赖,并把它的最新的“版本”的版本。

管理Maven和常春藤库是有点新的给我 - 我尝试以下步骤,它们导致"Could not resolve dependency ..." error

  • compile "junit:junit:latest.release"设置为仅mavenCentral()(但是,它的作品库如果我说“junit:junit:4.10”)。

  • compile "junit:junit:latest.release"与仓库设置方式如下:

ivy { 
    // I also tried 'http://maven.org' and other possible variants.   
    url "http://repo1.maven.org" 
    layout "maven" 
} 
  • 试图使用Spring Source Ivy repository
ivy { 
    artifactPattern "http://repository.springsource.com/ivy/libraries/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" 
    ivyPattern "http://repository.springsource.com/ivy/libraries/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" 
} 

也许我误解的东西 - 为什么会得到最新版本的依赖的是这样一个艰巨的任务是什么?

+0

动态版本可以是可用最新版本'latest.integration'的占位符。 [https://docs.gradle.org/current/userguide/dependency_management.html#sub:dynamic_versions_and_changing_modules] – Bhavik 2016-10-28 19:35:28

回答

29

Gradle目前不支持Maven的RELEASE(这很少使用和弃用),但它确实支持Ivy的latest.release。但是,一般建议是针对确切版本进行构建。否则,构建可以成为彩票。

+0

Maven不支持RELEASE。只有固定的版本号。 – khmarbaise 2012-04-29 12:36:32

+9

我已经仔细检查过。 Maven确实支持版本2和3中的'RELEASE'。 – 2012-04-29 13:44:47

+0

您是对的。我误解了插件的版本,导致Maven 3不允许RELEASE/LATEST。但使用这种版本标识符当然是不好的做法。 – khmarbaise 2012-04-29 14:26:44

189

有时获得最新版本可能非常有用 - 例如,如果您经常释放自己的依赖关系。

你可以得到最新的版本一样

compile "junit:junit:+" 

或更好指定至少像

compile "junit:junit:4.+" 
+16

只是为了记录:那应该确实是双引号!我一直在用大多数依赖声明的单引号,并发现'code'junit:junit:4。+''不起作用 – azonli 2013-02-20 11:32:40

+1

@azonli似乎用单引号工作,至少对于本地依赖。你会得到什么错误? – 2014-04-21 18:11:02

+0

我试过'Gradle' 2.2,它工作正常 – DerekY 2014-11-24 02:29:21

17

退房的摇篮版本,插件的主要版本。它正是你想要的:https://github.com/ben-manes/gradle-versions-plugin

有关安装,请参阅github页面。基本上你需要将以下两行添加到您的build.gradle - 项目文件:

apply plugin: 'com.github.ben-manes.versions' 

buildscript { 
    [...] 
    dependencies { 
     classpath 'com.github.ben-manes:gradle-versions-plugin:0.8' 
     [...] 
    } 
} 
[...] 

然后你可以使用该插件,在您的项目目录运行在终端命令:

./gradlew dependencyUpdates -Drevision=release 

而且它会告诉你哪些依赖过时了!

6

最新摇篮用户指南中提到,并解释了加号的版本:

7.2. Declaring your dependencies

dependencies { 
    compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final' 
    testCompile group: 'junit', name: 'junit', version: '4.+' 
} 

...构建脚本还指出,任何的junit> = 4.0是必需的编译该项目的测试。

23.7. How dependency resolution works

如果相关声明为一个动态的版本(如1 +),摇篮会解决这个资源库中的最新的可用静态版本(如1.2)。对于Maven仓库,这是使用maven-metadata.xml文件完成的,而对于Ivy仓库来说,这是通过目录列表完成的。

2

如果您使用+的版本,并想知道哪个版本是实际使用,在边栏中选择Project,然后External Libraries下,你会看到在实际使用中的版本号。