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。