2016-11-18 185 views
1

我想与你分享我的问题。也许有人也面临这个问题,并会有解决办法。 简言之,Gradle不会解决频繁更改的依赖关系。 我们使用:Gradle“改变”依赖关系管理

./gradlew -v 

------------------------------------------------------------ 
Gradle 2.12 
------------------------------------------------------------ 

Build time: 2016-03-14 08:32:03 UTC 
Build number: none 
Revision:  b29fbb64ad6b068cb3f05f7e40dc670472129bc0 

Groovy:  2.4.4 
Ant:   Apache Ant(TM) version 1.9.3 compiled on December 23 2013 
JVM:   1.8.0_66 (Oracle Corporation 25.66-b17) 
OS:   Linux 2.6.18-409.el5 amd64 

让我试图解释发生了什么。 我们有一些项目依赖于另一个独立项目。 两者正在积极发展。 一个是:字符串的解析器版本:1.0.0-SNAPSHOT 二是:工具-utils的版本:2.2.0-SNAPSHOT 我们内部有行家artifactory的,我们在串解析器配置的:

# some code there 
configurations.all { 
    resolutionStrategy.cacheChangingModulesFor 0, TimeUnit.MILLISECONDS 
} 

repositories { 
    mavenLocal() 
    maven { url 'https://some.internal.com/deploy-snapshot'} 
    maven { url 'https://some.internal.com/deploy-release'} 
    } 

dependencies { 
# Some other dependencies listed here 
    compile('com.some.group:tools-utils:2.2.0-SNAPSHOT') { 
    changing = true 
    } 
} 

所以,当我们正在做地方工作站变化(窗口 - 我认为这并不重要)为工具-utils的并上传上次快照神器版本到Maven本地和远程一切正常。我们去串解析器项目按“重新导入”按钮(在的IntelliJ IDEA 2016年1月2日)和摇篮切换到正确的相关版本。 但是,如果有人做了一些改变,并上传新版本Maven的远程它不会更新缓存依赖,仍然指向旧版本。为了解决这个问题,我们手动从Gradle缓存中删除工件,并从Maven Local中删除(!)。

能否请您咨询我一些事情,因为手动清理缓存(或与TeamCity的添加工序)是一场噩梦?

+0

你有没有试图消除'改变= TRUE'?根据你的'resolutionStrategy'应该禁用缓存。 – JBirdVegas

+0

你是否从命令行使用Gradle?如果是这样,你有没有尝试添加参数 - 刷新 - 依赖关系? –

回答

0

尝试把这个在allprojects

// forces all changing dependencies (i.e. SNAPSHOTs) to automagicially download 
    // (thanks, @BillBarnhill!) 
    configurations.all { 
     resolutionStrategy { 
      cacheChangingModulesFor 0, 'seconds' 
     } 
    } 

Source: Gradle-Fury

+0

非常感谢!这件事情正常工作。 –