簡體   English   中英

Maven 執行器插件因打開的 JDK 中的版本字符串而崩潰

[英]Maven enforcer plugin crashing because of version string in open JDK

我下載了 open jdk 並且在 maven 構建方面遇到了一些問題,特別是 maven-enforcer-plugin。 使用插件版本 1.4.1。

Enforcer 插件正在嘗試強制執行 JDK 版本,例如

<requireJavaVersion>
    <version>[13,)</version>
    <message>[ERROR] OLD JDK [${java.version}] in use. Need JDK 13.0 or newer</message>
</requireJavaVersion>

Enforcer 插件因以下錯誤而崩潰

Caused by: java.lang.StringIndexOutOfBoundsException: begin 0, end 3, length 2
    at java.lang.String.checkBoundsBeginEnd (String.java:3319)
    at java.lang.String.substring (String.java:1874)
    at org.apache.commons.lang.SystemUtils.getJavaVersionAsFloat (SystemUtils.java:1122)
    at org.apache.commons.lang.SystemUtils.<clinit> (SystemUtils.java:818)
    at org.apache.maven.plugins.enforcer.RequireJavaVersion.execute (RequireJavaVersion.java:52)
    at org.apache.maven.plugins.enforcer.EnforceMojo.execute (EnforceMojo.java:193)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)

花了很多時間,我終於弄清楚JDK是報告沒有小數點的版本。 這導致插件失敗。

java -version
   openjdk version "13" 2019-09-17
   OpenJDK Runtime Environment (build 13+33)
   OpenJDK 64-Bit Server VM (build 13+33, mixed mode, sharing)

在這種情況下有什么解決方法?

根據最近的消息來源,它仍在使用 commons-lang 來檢測 Java 版本。 這個實現有一些問題並且不向前兼容。 我已經創建了MENFORCER-347 ,這應該是一個簡單的修復。 我已將其標記為 up-for-grabs,因此它會顯示在https://s.apache.org/up-for-grabs_maven的列表中,希望有人會選擇它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM