1. 程式人生 > 其它 >The POM for com.alibaba:druid:jar:1.2.6 is invalid, transitive dependencies (if any) will not be available

The POM for com.alibaba:druid:jar:1.2.6 is invalid, transitive dependencies (if any) will not be available

開發環境

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構建的,所以添加了這兩個依賴。

所以導致這個的原因也就明瞭了

  1. 開發環境使用的JDK和 com.alibaba.druid 包不一致;
  2. 這是 com.alibaba.druid 的一個bug,未考慮不同JDK環境的影響

解決問題

問題是找到了,該怎麼解決呢?

目前,我想到的解決方案有3個

  1. 切換到其他版本,如 1.2.5。(已驗證)
  2. 註釋掉這兩個依賴。正常開發沒有影響。(已驗證)
  3. 使用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)也出現過,並且後來的版本也修復了。但是最近又出現了這樣的問題...