Сбой подключаемого модуля Maven из-за строки версии в открытом JDK - PullRequest
1 голос
/ 15 января 2020

Я скачал open jdk и у меня возникли некоторые проблемы с сборкой maven, в частности, maven -forcer-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)

Каким будет обходной путь в этой ситуации?

1 Ответ

0 голосов
/ 16 января 2020

Основываясь на недавних источниках , он все еще использует commons-lang для обнаружения версии Java. Эта реализация имеет некоторые проблемы и не совместима с форвардом. Я создал MENFORCER-347 , что должно быть легко исправить. Я пометил его как «интересный», поэтому он появится в списке https://s.apache.org/up-for-grabs_maven, и, надеюсь, кто-нибудь его подберет.

...