在我们的大部分gradle项目中,我们都有以下依赖关系:
compile('com.xxx.yyy.zzz:ch-commons:+')
根据我们对文档的理解,这应该从我们的maven存储库中检索最新版本的ch-commons
。
TL;博士
我们的实际"最新版本"是1.7.0-SNAPSHOT
,但gradle 实际检索1.6.0-SNAPSHOT
。
整个故事
我们的存储库配置如下:
repositories {
maven { url 'https://local-repo/artifactory/apps-release-local' } // company application release builds
maven { url 'https://local-repo/artifactory/apps-snapshot-local' } // company application snapshot builds
maven { url 'https://local-repo/artifactory/repo1' } // company lazy mirror of central repos
mavenCentral()
jcenter()
}
我已经确认除ch-commons
之外的任何位置都没有apps-release-local
个工件。在apps-release-local
中我们有以下内容(sha1,md5和元数据文件省略):
Index of apps-snapshot-local/com/xxx/yyy/zzz/ch-commons
Name Last modified Size
../
1.0.1-SNAPSHOT/ 07-Apr-2016 16:09 -
1.0.2-SNAPSHOT/ 08-Apr-2016 11:03 -
1.0.3-SNAPSHOT/ 08-Apr-2016 14:32 -
1.0.4-SNAPSHOT/ 13-Apr-2016 12:33 -
1.1.0-SNAPSHOT/ 15-Apr-2016 12:37 -
1.2.0-SNAPSHOT/ 17-May-2016 13:16 -
1.2.1-SNAPSHOT/ 18-May-2016 14:28 -
1.3.0-SNAPSHOT/ 14-Jun-2016 15:42 -
1.4.0-SNAPSHOT/ 17-Jun-2016 11:57 -
1.5.0-SNAPSHOT/ 17-Jun-2016 13:42 -
1.5.1-SNAPSHOT/ 21-Jun-2016 16:16 -
1.6.0-SNAPSHOT/ 22-Jun-2016 09:27 -
1.6.2-SNAPSHOT/ 30-Jun-2016 22:02 -
1.6.3-SNAPSHOT/ 01-Jul-2016 10:42 -
1.7.0-SNAPSHOT/ 01-Jul-2016 13:34 -
查看1.7.0-SNAPSHOT
目录,我们有以下内容(相同的内容已被删除):
Index of apps-snapshot-local/com/xxx/yyy/zzz/ch-commons/1.7.0-SNAPSHOT
Name Last modified Size
../
ch-commons-1.7.0-20160701.183333-1-sources.jar 01-Jul-2016 13:34 14.54 KB
ch-commons-1.7.0-20160701.183333-1.jar 01-Jul-2016 13:34 22.19 KB
ch-commons-1.7.0-20160701.183333-1.pom 01-Jul-2016 13:34 2.21 KB
apps-snapshot-local/com/xxx/yyy/zzz/ch-commons/maven-metadata-2.xml
的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>com.xxx.yyy.zzz</groupId>
<artifactId>ch-commons</artifactId>
<version>1.6.3-20160701.154200-1</version>
<versioning>
<latest>1.7.0-SNAPSHOT</latest>
<versions>
<version>1.0.1-SNAPSHOT</version>
<version>1.0.2-SNAPSHOT</version>
<version>1.0.3-SNAPSHOT</version>
<version>1.0.4-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<version>1.2.1-SNAPSHOT</version>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<version>1.5.0-SNAPSHOT</version>
<version>1.5.1-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
<version>1.6.2-SNAPSHOT</version>
<version>1.6.3-SNAPSHOT</version>
<version>1.7.0-SNAPSHOT</version>
</versions>
<lastUpdated>20160701183429</lastUpdated>
</versioning>
</metadata>
此外,如果我们更改依赖性声明以引用显式版本:
compile('com.xxx.yyy.zzz:ch-commons:1.7.0-SNAPSHOT')
然后正常工作&#34;正确地检索1.7.0-SNAPSHOT
。
那么,为什么不使用+
版本通配符检索最新版本的依赖项设置呢?
答案 0 :(得分:7)
默认情况下,gradle 缓存 SNAPSHOT依赖关系24小时 您可以使用
手动刷新它们--refresh-dependencies
或者您可以按照指南配置缓存持续时间: https://docs.gradle.org/current/userguide/dependency_management.html#sub:cache_refresh
答案 1 :(得分:1)
您也可以将更改设置为 true,这样它就不会缓存快照
实现组:'com.xxx.yyy.zzz',名称:'ch-commons',版本:'1.7.0-SNAPSHOT',更改:true