開發環境
IDEA2020.3, jdk1.8.0_231
問題描述
開發中引入了druid-spring-boot-starter最新版本1.2.6,項目install時的時候一直出現警告
The POM for com.alibaba:druid:jar:1.2.6 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
尋找問題
按照提示編輯運行配置,輸出debug日志
install -X -f pom.xml
再次執行,得到詳細的日志‘
[DEBUG] ======================================================================= [WARNING] The POM for com.alibaba:druid:jar:1.2.6 is invalid, transitive dependencies (if any) will not be available: 2 problems were encountered while building the effective model for com.alibaba:druid:1.2.6 [ERROR] 'dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${project.basedir}/lib/openjdk-1.8-tools.jar @ [ERROR] 'dependencies.dependency.systemPath' for com.sun:jconsole:jar must specify an absolute path but is ${project.basedir}/lib/openjdk-1.8-jconsole.jar @
從日志看, com.sun:tools:jar,com.sun:jconsole:jar必須指定絕對路徑,不能是相對路徑!
但是是在哪里指定的呢?
仔細想了想,應該是在m2包目錄下。結果真的在 druid-1.2.6.pom 文件中給找到了
pom文件在這里
C:\Users\admin\.m2\repository\com\alibaba\druid\1.2.6\druid-1.2.6.pom
使用notepad++ 打開搜索 com.sun,可以看到有兩處,正式報錯的兩個地方!!!
com.alibaba.druid 這個包應該是使用OpenJDK構建的,所以添加了這兩個依賴。
所以導致這個的原因也就明了了
- 開發環境使用的JDK和 com.alibaba.druid 包不一致;
- 這是 com.alibaba.druid 的一個bug,未考慮不同JDK環境的影響
解決問題
問題是找到了,該怎么解決呢?
目前,我想到的解決方案有3個
- 切換到其他版本,如 1.2.5。(已驗證)
- 注釋掉這兩個依賴。正常開發沒有影響。(已驗證)
- 使用OpenJDK。(未驗證)
還有一個辦法就是視而不見,因為只是警告,並不影響使用。
后話
在 https://github.com/alibaba/druid 項目Issues 搜索也可以看到類似的問題。1.2.6 版本有人提,但是目前還沒人解答
issue 地址 The POM for com.alibaba:druid:jar:1.2.6 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details · Issue #4305 · alibaba/druid · GitHub
有趣的是,這個問題在其他版本(1.1.21)也出現過,並且后來的版本也修復了。但是最近又出現了這樣的問題...