为什么我的 gradle 构建没有加载最新的依赖项?
Why is my gradle build not loading the most recent dependency?
在我们的大多数 gradle 项目中,我们有以下依赖项:
compile('com.xxx.yyy.zzz:ch-commons:+')
根据我们对文档的理解,这应该是从我们的 maven 存储库中检索 ch-commons
的最新版本。
tl;dr
我们实际的 "most recent version" 是 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')
然后它工作 "correctly",检索正确的版本 1.7.0-SNAPSHOT
。
那么,为什么带有 +
版本通配符的依赖设置没有检索到最新版本?
默认情况下,gradle 缓存 SNAPSHOT 依赖项 24 小时。
您可以使用
手动刷新它们
--refresh-dependencies
或者您可以按照指南配置缓存持续时间:
https://docs.gradle.org/current/userguide/dependency_management.html#sub:cache_refresh
您还可以将 changing 设置为 true,这样它就不会缓存快照
实施组:'com.xxx.yyy.zzz',名称:'ch-commons',版本:'1.7.0-SNAPSHOT',更改:true
在我们的大多数 gradle 项目中,我们有以下依赖项:
compile('com.xxx.yyy.zzz:ch-commons:+')
根据我们对文档的理解,这应该是从我们的 maven 存储库中检索 ch-commons
的最新版本。
tl;dr
我们实际的 "most recent version" 是 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')
然后它工作 "correctly",检索正确的版本 1.7.0-SNAPSHOT
。
那么,为什么带有 +
版本通配符的依赖设置没有检索到最新版本?
默认情况下,gradle 缓存 SNAPSHOT 依赖项 24 小时。
您可以使用
--refresh-dependencies
或者您可以按照指南配置缓存持续时间: https://docs.gradle.org/current/userguide/dependency_management.html#sub:cache_refresh
您还可以将 changing 设置为 true,这样它就不会缓存快照
实施组:'com.xxx.yyy.zzz',名称:'ch-commons',版本:'1.7.0-SNAPSHOT',更改:true