2015-06-04 68 views
3

我遇到了resolutionStrategy.cacheChangingModulesFor问题。Gradle如何在build脚本块中为SNAPSHOT版本指定cacheResolutionStrategy?

我的项目的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块快照版本的cacheResolutionStrategy?

回答

6

指定它在块外,不起作用(,因为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' 
    } 
} 
+0

顺便说一句,快照版本被视为“改变中”默认(如果使用的Maven回购)。因此不需要明确设置“changing = true”。 –

+0

很确定这是因为我们当时使用的Gradle版本中存在一个错误。现在,这是不需要的! :) – wrossmck

相关问题