Gradle"改变"依赖关系管理

时间:2016-11-18 13:46:38

标签: gradle build.gradle gradle-dependencies

我想和你分享我的问题。也许有人也遇到了这个问题并且会有解决方案。 简而言之,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 第二是: tools-utils 版本:2.2.0-SNAPSHOT 我们有内部maven artifactory,我们在 string-parser

中配置它
# 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
  }
}

因此,当我们在 tools-utils 的本地工作站(Windows - 我认为无关紧要)进行更改时,将上一个快照工件版本上传到maven local和远程一切都很好。我们转到 string-parser 项目按"重新导入"按钮(在 Intellij Idea 2016.1.2 中)和Gradle开关以更正依赖关系版本。 但是,如果有人做了一些更改并将新版本上传到 Maven远程,它不会更新缓存中的依赖关系,仍然指向旧版本。为了解决这个问题,我们手动从Gradle缓存中删除工件,从Maven Local手动删除(!)。

你能否告诉我一些事情,因为手动清理缓存(或者在TeamCity上添加一步)是一场噩梦?

1 个答案:

答案 0 :(得分:0)

尝试将其放入allprojects

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

Source: Gradle-Fury