最近遇到一個巨坑的問題:
Failed to read artifact descriptor for org.apache.geronimo.specs:geronimo-jta_1.0.1B_spec:jar:1.0.1: Failure to find org.apache.geronimo.specs:specs:pom:1.1 in http://······ was cached in the local repository, ······
後來發現是新的二進制倉庫裏面找不到這個pom文件
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>specs</artifactId>
<version>1.1</version>
<type>pom</type>
</dependency>
但是在其代理的nexus倉庫中找到了這個pom文件
然後通過URL進行下載,發現nexus直接在瀏覽器中顯示了pom文件的內容,而新的二進制倉庫卻報錯
{
"errors" : [ {
"status" : 409,
"message" : "Failed to read POM for 'org/apache/geronimo/specs/specs/1.1/specs-1.1.pom': expected START_TAG or END_TAG not TEXT (position: TEXT seen ...</developers>\\n ~\\n <p... @91:7) ."
} ]
}
這個錯咱也看不懂,大概意思就是POM讀取失敗,報錯重點提示了這個"~",於是講pom文件下載下來之後發現第90行確實多了一個"~"
讓我沒想到的是公網倉庫"https://maven.aliyun.com/repository/jcenter"居然也埋有這種pom文件有問題的坑
不過用之前的nexus倉庫進行構建的時候能夠成功,但是用新的二進制倉庫構建的時候就找不到這個pom文件了,這個倉庫不是已經進行代理了麼
沒辦法,我只能將這個pom先上傳到二進制倉庫的local倉庫中,發現並不能點擊上傳按鈕
想起下載的時候報錯,猜測可能是對pom做解析了,於是刪除"~"之後果然上傳成功了
現在理清邏輯了,原來是新的二進制倉庫下載pom文件之前先要對其進行解析然後才同步到它裏面,這就是不能找到文件的原因了
那麼問題來了,這些公網倉庫誰知道還有沒有別的坑呢?
現在新的二進制倉庫對pom進行校驗之後反而失去了更強的兼容性,咱也不能去改公網的東西是吧。