【问题标题】:Gradle How can i specify the cacheResolutionStrategy for the SNAPSHOT version in my buildscript block?Gradle 如何在我的 buildscript 块中为 SNAPSHOT 版本指定 cacheResolutionStrategy?
【发布时间】:2015-08-18 22:27:59
【问题描述】:

我遇到了 resolutionStrategy.cacheChangingModulesFor 的问题。

我的项目 build.gradle 看起来和这个类似

apply plugin: 'base'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply from: "gradle/mixins/cachestrategy.gradle"
configurations.all {
  resolutionStrategy.cacheDynamicVersionsFor 5, 'minutes'
  resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

buildscript {
  repositories {
    maven {
      url artifactoryUrl
    }
  }
  dependencies {
    classpath (group: 'com.myorg', name: 'aCustomPlugin', version: '1.5.0-SNAPSHOT') {
      changing = true
    }
  }
}

allprojects {
  apply plugin: 'base'
  apply plugin: 'com.myorg.aCustomPlugin'
}

我的问题是:如何在我的 buildscript 块中为 SNAPSHOT 版本指定 cacheResolutionStrategy?

【问题讨论】:

    标签: gradle dependencies dependency-resolution


    【解决方案1】:

    在块之外指定它不起作用(因为首先评估 buildscript 块,以便构建脚本......)所以脚本中定义的缓存策略规则没有'尚未评估。

    解析策略应该像这样放在buildscript块中

    buildscript {
      repositories {
        mavenLocal()
        maven {
          url artifactoryUrl
        }
      }
      dependencies {
        classpath (group: 'com.myorg', name: 'aCustomPlugin', version: '1.5.0-SNAPSHOT') {
          changing = true
        }
      }
      configurations.all {
        resolutionStrategy.cacheDynamicVersionsFor 5, 'minutes'
        resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
      }
    }
    

    【讨论】:

    • 顺便说一句,SNAPSHOT 版本默认被视为“更改”(如果使用 Maven 存储库)。因此不需要显式设置changing = true
    • 很确定这是由于我们当时使用的 gradle 版本中的一个错误。现在,它不需要了! :)
    • 你能解释一下cacheDynamicVersionsFor和cacheChangingModulesFor的区别吗?
    • 对于后代,“更改模块”是指 SNAPSHOT 版本和任何明确标记为更改的依赖项。动态版本的示例是 2.+,它将解析为可用的最新 2.x 版本。
    猜你喜欢
    • 2018-03-04
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 2015-03-10
    • 2015-08-14
    • 2015-03-07
    相关资源
    最近更新 更多