105

Gradle告诉以下内容的最简单方法是什么:

检索“junit”依赖项并获取其最新的“发布”版本。

管理 Maven 和 Ivy 存储库对我来说有点新鲜。我尝试了以下步骤,但它们导致Could not resolve dependency ...错误:

  • compile "junit:junit:latest.release"将存储库设置为 only (但是,如果我说“junit:junit:4.10”,它会起作用)mavenCentral()

  • 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 存储库:

    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]"
    }
    

也许我误解了什么。为什么获取最新版本的依赖项会是一项如此艰巨的任务?

4

6 回答 6

278

有时获取最新版本会非常有用——例如,如果您经常发布自己的依赖项。

您可以获得最新版本,例如

compile "junit:junit:+"

或者最好至少指定主要版本,例如

compile "junit:junit:4.+"
于 2012-04-29T16:31:18.603 回答
56

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

于 2012-04-29T08:06:37.000 回答
25

查看 Gradle-Versions-Plugin。它完全符合您的要求: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

它会告诉你哪些依赖是过时的!

于 2015-04-07T12:49:48.913 回答
10

最新的 Gradle 用户指南提到并解释了加号登录版本:

7.2 开始。声明你的依赖

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. 依赖解析如何工作

如果依赖项被声明为动态版本(如 1.+),Gradle 会将其解析为存储库中最新的可用静态版本(如 1.2)。对于 Maven 存储库,这是使用 maven-metadata.xml 文件完成的,而对于 Ivy 存储库,这是通过目录列表完成的。

于 2016-02-28T15:52:30.993 回答
3

在 Android Studio 中:

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

于 2017-09-29T22:20:00.033 回答
0

Kotlin DSL(build.gradle.kts)的另一个类似符号:

dependencies {
    implementation("or.jsoup", "jsoup") {
        version {
            require("1.14.+")
        }
    }
    // OR simply
    // implementation("or.jsoup:jsoup:1.14.+")
}

在Gradle 文档中阅读有关此内容的更多信息。

文档摘录:

动态版本可以是版本范围(例如 2.+),也可以是可用的最新版本的占位符,例如 latest.integration。

于 2022-02-12T19:09:37.787 回答