[英]Why is maven enforcer plugin failing with maven version 3.6.1 but passing with 3.6.2?
[英]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.