關(guān)于maven構(gòu)件解析步驟請看maven---6倉庫-->6從倉庫解析依賴的機(jī)制
1依賴解析錯誤
1.1錯誤結(jié)果
Paste_Image.png
1.2產(chǎn)生可能原因
從私服上下載構(gòu)件(依賴或插件)時由于私服服務(wù)器不穩(wěn)定或者網(wǎng)絡(luò)原因?qū)е聜鬏斘募 ?/p>
- 上面失敗原因是解析stanford-corenlp-3.3.1.jar失敗痕慢,而解析stanford-corenlp-3.3.1.jar失敗是因為從私服上傳輸文件到本地失敗坑傅,錯誤返回碼是500,說明私服傳輸出現(xiàn)問題窥浪。
- 看一下本地stanford-corenlp-3.3構(gòu)件的內(nèi)容:
Paste_Image.png
- 其中stanford-corenlp-3.3.1.jar.lastUpdated文件記錄的是最近一次maven根據(jù)更新規(guī)則或者(-U)命令執(zhí)行的一次正常檢查更新失敗的原因躏升。如果更新成功就沒有該文件惧财,內(nèi)容如下:
#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.
#Mon Jan 09 22:48:23 CST 2017
@default-nexus-mirror-http\://172.19.201.155\:8081/repository/maven-public/.lastUpdated=1483973303784
http\://localhost\:8081/repository/maven-public/.lastUpdated=1480213183807
http\://localhost\:8081/repository/maven-public/.error=
http\://172.19.201.155\:8081/repository/maven-public/.error=Could not transfer artifact edu.stanford.nlp\:stanford-corenlp\:jar\:3.3.1 from/to nexus-mirror (http\://172.19.201.155\:8081/repository/maven-public/)\: Failed to transfer file\: http\://172.19.201.155\:8081/repository/maven-public/edu/stanford/nlp/stanford-corenlp/3.3.1/stanford-corenlp-3.3.1.jar. Return code is\: 500, ReasonPhrase\: Server Error.
1.3解決辦法
1.在保證網(wǎng)絡(luò)暢通的情況下宋税,再次執(zhí)行一遍相同的maven命令,同時加上-U參數(shù)坪圾,讓maven強(qiáng)制更新晓折,不然如果在新的更新周期沒到后惑朦,maven會直接將上次緩存的失敗結(jié)果返回給你,如下圖返回緩存失敗結(jié)果漓概。
返回緩存的失敗結(jié)果
2.上一個方法有可能還會失斞隆:因為-U會和私服交互檢查更新pom.xml中的所有構(gòu)件,如果pom.xml中的構(gòu)件很多胃珍,有可能還會因為私服不穩(wěn)定等原因造成此次執(zhí)行失敗梁肿。那么有一種情況可以不使用-U,首先要明白觅彰,凡是pom.xml中的構(gòu)件在本地倉庫中存儲xxxx.lastUpdated文件吩蔑,那么maven就會去遠(yuǎn)程倉庫檢查更新(當(dāng)然如果在更新周期沒到期間會直接返回上次更新失敗結(jié)果),更新成功就會刪掉該文件填抬,失敗會繼續(xù)存在烛芬。所以把pom.xml中構(gòu)件在本地倉庫中的xxxx.lastUpdated文件刪除掉,這樣maven在執(zhí)行命令時痴奏,發(fā)現(xiàn)依賴的構(gòu)件存在直接使用蛀骇,而不去更新(如果存在xxxx.lastUpdated肯定會連接私服更新)厌秒,發(fā)現(xiàn)構(gòu)件不存在就去下載读拆。當(dāng)然這只適合構(gòu)件不太多情況。