Gradle "changing" 依赖管理
Gradle "changing" dependencies management
我想和你分享我的问题。也许有人也遇到过这个问题并且会有解决方案。
简而言之,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
让我试着解释一下发生了什么。
我们有一些项目依赖于另一个独立项目。
两者都在积极开发中。
一个是:string-parser 版本: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 本地和远程版本一切正常。我们转到 string-parser 项目按 "reimport" 按钮(在 Intellij Idea 2016.1.2 中)并 Gradle 切换到正确的依赖版本。
但是如果有人做了一些更改并将新版本上传到 Maven remote 它不会更新缓存中的依赖项并且仍然指向旧版本。为了修复它,我们从 Gradle 缓存中手动删除了工件,并从 Maven Local 中手动删除了工件。
你能给我一些建议吗,因为手动清理缓存(或在 TeamCity 上添加步骤)是一场噩梦?
尝试将其放入 allprojects
// forces all changing dependencies (i.e. SNAPSHOTs) to automagicially download
// (thanks, @BillBarnhill!)
configurations.all {
resolutionStrategy {
cacheChangingModulesFor 0, 'seconds'
}
}
我想和你分享我的问题。也许有人也遇到过这个问题并且会有解决方案。 简而言之,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
让我试着解释一下发生了什么。 我们有一些项目依赖于另一个独立项目。 两者都在积极开发中。 一个是:string-parser 版本: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 本地和远程版本一切正常。我们转到 string-parser 项目按 "reimport" 按钮(在 Intellij Idea 2016.1.2 中)并 Gradle 切换到正确的依赖版本。 但是如果有人做了一些更改并将新版本上传到 Maven remote 它不会更新缓存中的依赖项并且仍然指向旧版本。为了修复它,我们从 Gradle 缓存中手动删除了工件,并从 Maven Local 中手动删除了工件。
你能给我一些建议吗,因为手动清理缓存(或在 TeamCity 上添加步骤)是一场噩梦?
尝试将其放入 allprojects
// forces all changing dependencies (i.e. SNAPSHOTs) to automagicially download
// (thanks, @BillBarnhill!)
configurations.all {
resolutionStrategy {
cacheChangingModulesFor 0, 'seconds'
}
}