問題描述
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。