为什么我的gradle构建没有加载最新的依赖项?
在我们的大多数gradle项目中,我们有以下依赖关系:为什么我的gradle构建没有加载最新的依赖项?,gradle,artifactory,gradlew,Gradle,Artifactory,Gradlew,在我们的大多数gradle项目中,我们有以下依赖关系: compile('com.xxx.yyy.zzz:ch-commons:+') 根据我们对文档的理解,这应该是从我们的maven存储库中检索最新版本的ChCommons tl;dr 我们实际的“最新版本”是1.7.0-SNAPSHOT,但gradle实际上正在检索1.6.0-SNAPSHOT 整个故事 我们的存储库配置如下: repositories { maven { url 'https://local-repo/artifa
compile('com.xxx.yyy.zzz:ch-commons:+')
根据我们对文档的理解,这应该是从我们的maven存储库中检索最新版本的ChCommons
tl;dr
我们实际的“最新版本”是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()
}
<?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>
我已经验证,除了本地发布的应用程序
之外,这些位置中没有ch commons
工件。在apps release local
中,我们有以下内容(省略了sha1、md5和元数据文件):
查看1.7.0-SNAPSHOT
目录,我们有以下内容(省略相同内容):
apps snapshot local/com/xxx/yyy/zzz/ch commons/maven-metadata-2.xml
的内容如下:
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()
}
<?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>
然后它“正确”工作,检索正确的版本1.7.0-SNAPSHOT
那么,为什么带有
+
版本通配符的依赖项设置不检索最新版本呢?默认情况下,gradle将快照依赖项缓存24小时。您可以使用手动刷新它们
--refresh-dependencies
或者,您可以按照指南配置缓存持续时间:
您还可以将“更改”设置为true,这样它就不会缓存快照
实施组:'com.xxx.yyy.zzz',名称:'ch commons',版本:'1.7.0-SNAPSHOT',更改:truemaven元数据文件的最新状态是什么?发布此问题后,我实际上跳到了
1.7.0-SNAPSHOT
。这就是maven-metadata-2.xml
所说的最新版本。但我的本地版本仍在检索1.6.0-SNAPSHOT
。
--refresh-dependencies