【问题标题】:Avoid gradle cache for the snapshot versions避免快照版本的 gradle 缓存
【发布时间】:2015-06-27 03:11:09
【问题描述】:

我正在使用 Android Studio 中某些库的 SNAPSHOT 版本。

问题在于 Gradle 似乎使用了这些库的缓存版本,并且不会重新下载新更新的快照版本。

我尝试在我的 gradle 脚本中使用类似的东西,但它不起作用。

dependencies {
    compile ('myGroupId:myArtifactId:X.Y.Z-SNAPSHOT'){
        changing=true
    }
}

似乎唯一可行的解​​决方法是删除 ~/.gradle/caches 目录,然后在 Android Studio 中重新同步项目。 当然这不是一个好的解决方案。

我们如何使用快照版本?

【问题讨论】:

    标签: android android-studio gradle android-gradle-plugin build.gradle


    【解决方案1】:

    你也可以使用gradle参数--refresh-dependencies

    --refresh-dependencies 选项告诉 Gradle 忽略已解析模块和工件的所有缓存条目。将对所有配置的存储库执行新的解析,重新计算动态版本,刷新模块并下载工件。 ...


    我为自己创建了一个名为 refresh 的新 gradle 运行命令,该命令调用
    ./gradlew --refresh-dependencies clean

    【讨论】:

    • 这个脚本运行良好 (+1)。无论如何,我更喜欢其他答案,因为在团队中它似乎更舒服和合适。
    • 那不是也刷新非快照依赖吗?
    【解决方案2】:

    尝试将其添加到您的 gradle 脚本中:

    configurations.all {
        resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
    }
    

    更多信息: http://gradle.org/docs/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html

    【讨论】:

    • 请注意,这会导致在每次构建/gradle 同步时刷新所有依赖项,这可能会大大增加构建时间。由于依赖关系不会每隔几秒就改变一次,我建议使用手动触发器,如my answer 所示。然后可以将您的构建服务器配置为在每次构建时使用此触发器。
    • 我认为更改模块应该只包括快照版本,而不是像 @Mannaz 的选项那样刷新所有依赖项?
    猜你喜欢
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2014-09-19
    • 1970-01-01
    • 2018-10-20
    相关资源
    最近更新 更多