1. 程式人生 > >is invalid, transitive dependencies (if any) will not be available解決方案

is invalid, transitive dependencies (if any) will not be available解決方案

問題描述
maven專案在編譯的時候報如下WARNING:

[WARNING] The POM for com.winwill.test:0.0.1-SNAPSHOT is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details

翻譯一下:

com.winwill.test:0.0.1-SNAPSHOT失效,如果該pom下有任何間接依賴,這些依賴將會失效。開啟debug獲取更多資訊。

比如如下場景,我有三個專案A, B, C,依賴關係如下: 

è¿éåå¾çæè¿°


假如B invalid了,那麼A通過B間接依賴的C就會失效,導致A專案編譯不過。

問題定位
google了很長時間,沒有在網上找到能解決我的問題的答案,那就自己動手來定位問題的原因,按照maven的提示開啟debug日誌,在A專案下執行如下命令:

 mvn -X -U clean package 
1
再次檢視編譯日誌,這時候在[WARNING] The POM for com.winwill.test:0.0.1-SNAPSHOT is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details日誌的下一行會有類似如下提示:

[ERROR] ‘dependencies.dependency.version’ for xxx:yyy:jar is missing. @-

這是ERROR日誌,感覺應該是問題的root cause,這行日誌表示B專案中依賴的xxx:yyy沒有指定version。

在B專案中為xxx:yyy加上version之後再次編譯,發現一切ok~~

簡單總結
專案中依賴其他jar時,如果不指定version,或者version在父pom中通過DependencyManagement指定但是父pom沒有deploy時,可能會導致專案jar invalid。