Gradle: MetaDataParseException: inconsistent module metadata found

在使用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()
}

這個時候便更順利的把之前的版本拉取下來了,不過爲什麼先掃描本地就有問題呢?這個有待探究…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章