Ошибка: log4j-api-2.9.0.jar является файлом jar с несколькими выпусками, но опция --multi-release не установлена
Изучение maven-jdeps-plugin:3.1.0
с Java9, используя следующие минимальные pom.xml
:-
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.9</source>
<target>1.9</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jdeps-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<goals>
<goal>jdkinternals</goal> <!-- verify main classes -->
<goal>test-jdkinternals</goal> <!-- verify test classes -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
По выполнению
mvn install
Я получаю подробную ошибку, которая гласит следующее:
[INFO] Error: log4j-api-2.9.0.jar is a multi-release jar file but --multi-release option is not set [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.389 s [INFO] Finished at: ... [INFO] Final Memory: 12M/41M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-jdeps-plugin:3.1.0:jdkinternals (default) on project maven-jigsaw: [ERROR] Exit code: 2 [ERROR] Command line was: /bin/sh -c '/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/bin/jdeps' '-cp' '.../.m2/repository/org/apache/logging/log4j/log4j-api/2.9.0/log4j-api-2.9.0.jar' '../maven/target/classes'
Я не мог найти много релевантности, связанной с --multi-release
флаг в любом jdeps:jdkinternals
цель подробно изложена на официальном сайте Maven или даже в jdeps
инструмент документирован в справочном центре Oracle.
Может кто-то пролить свет на эту реализацию в maven-jdeps-plugin
? Есть ли способ исправить это (установить --multi-release
вариант)?
4 ответа
Это ошибка пользователя. Пожалуйста, введите jdeps -? в командной строке. Вы увидите, что вам нужно войти
jdeps --multi-release 9 ~/.m2/repository/org/apache/logging/log4j/log4j-api/2.9.1/log4j-api-2.9.1.jar
Что касается самого плагина, следующая конфигурация работает.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jdeps-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<goals>
<goal>jdkinternals</goal> <!-- verify main classes -->
<goal>test-jdkinternals</goal> <!-- verify test classes -->
</goals>
</execution>
</executions>
<configuration>
<multiRelease>9</multiRelease> <!-- Check this out -->
</configuration>
</plugin>
В конце концов с помощью комментария от Николая. Я мог бы заключить, разделив это на две разные проблемы:
Незначительная проблема со стороны
maven-jdeps-plugin
что я должен поднять их трекер, где его журналирование ошибок jdeps как INFO.С другой стороны, коренная причина вышеуказанной ошибки, когда я пытаюсь выполнить команду
jdeps
наlog4j-api-2.9.1.jar
как-➜ jdeps ~/.m2/repository/org/apache/logging/log4j/log4j-api/2.9.1/log4j-api-2.9.1.jar
Я получаю следующую ошибку:-
Ошибка: log4j-api-2.9.1.jar является файлом jar с несколькими выпусками, но опция --multi-release не установлена
Это можно отследить с параметром --multi-release, который не установлен для мульти-релиз-фляги.
Редактировать:- @rgoers ответил на правильный способ использования инструмента командной строки
Обновление:- Связанная ошибка плагина maven преобразуется в запрос новой функции и, вероятно, будет включена в будущие выпуски плагина.
Мы можем передать свойство multi-release через командную строку (начиная с версии 3.1.1), например:
mvn jdeps:jdkinternals -Djdeps.multiRelease=9