在使用gradle編譯的時候報錯:inconsistent module metadata found,期望的是 1.8.8-SNAPSHOT 但是發現 1.9.0-SNAPSHOT版本
Caused by: org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.MetaDataParseException: inconsistent module metadata found. Descriptor: ..., Errors: bad version: expected='1.8.8-SNAPSHOT' found='1.9.0-SNAPSHOT'</i>
先說一下背景:
我在項目A開發需求A,升級了依賴項目B的版本,爲1.9.0-SNAPSHOT,打包install到我本地,後面爲了開發項目A的需求B,它依賴項目B之前的版本1.8.8-SNAPSHOT(之前上傳到了自己公司的倉庫,即下面的自定義倉庫),這時我編譯項目A報錯了。
我的項目A的gradle配置如下:
repositories {
mavenLocal()
maven {
url "自定義倉庫"
}
mavenCentral()
jcenter()
}
- 清除本地maven倉庫中項目B的所有包(在用戶目錄下的
.m2
目錄),還是一樣的報錯 - 清除本地gradle 緩存(在用戶目錄下的
.gradle
目錄),還是一樣的報錯
解決方案:
突然想到,我只是把項目B的1.9.0-SNAPSHOT版本打包到我本地了,同時在我的配置裏是先掃描本地(mavenLocal()
),這個時候報錯應該是我本地的1.9.0-SNAPSHOT
版本東西沒清理乾淨,如果我配置裏先掃描自定義倉庫呢?於是把gradle配置改爲
repositories {
maven {
url "自定義倉庫"
}
mavenLocal()
mavenCentral()
jcenter()
}
這個時候便更順利的把之前的版本拉取下來了,不過爲什麼先掃描本地就有問題呢?這個有待探究…