Maven执行程序插件因打开的JDK中的版本字符串而崩溃

问题描述 投票:1回答:1

我下载了打开的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)

在这种情况下,解决方法是什么?

我下载了打开的jdk,并且在maven构建中遇到了一些问题,特别是maven-enforcer-plugin。使用插件版本1.4.1。 Enforcer插件正在尝试强制实施<...>

java maven maven-plugin
1个回答
0
投票

基于recent sources,它仍在使用commons-lang来检测Java版本。此实现存在一些问题,并且不向前兼容。我创建了MENFORCER-347,应该可以轻松解决。我已将其标记为可升级,因此它会显示在https://s.apache.org/up-for-grabs_maven列表中,希望有人会捡起来。

© www.soinside.com 2019 - 2024. All rights reserved.