Готов ли Maven к JDK9?

Сегодня я попробовал последнюю сборку jdk9 113 и попытался скомпилировать мой проект с последней версией Maven 3.3.9

Вот команды (частично найдены через твиттер)

export MVN_OPTS="-Dmaven.compiler.fork -Dmaven.compiler.executable=/somewhere/Downloads/jdk-9/bin/javac"
export JAVA_HOME="/somewhere/Downloads/jdk-9"
mvn clean install

Но я получаю эту ошибку... короче:

[WARNING] Error injecting: org.codehaus.plexus.archiver.jar.JarArchiver
java.lang.ExceptionInInitializerError
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-ea/Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-ea/NativeConstructorAccessorImpl.java:62)

...

at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.<clinit>(AbstractZipArchiver.java:116)
    ... 89 more
[WARNING] Error injecting: org.apache.maven.plugin.jar.JarMojo
java.lang.ExceptionInInitializerError
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-ea/Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-ea/NativeConstructorAccessorImpl.java:62)

...

at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.<clinit>(AbstractZipArchiver.java:116)
    ... 89 more

Какую правильную конфигурацию или параметры maven следует использовать для JDK9?

$ mvn --version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:47+01:00)
Maven home: /home/somewhere/Downloads/maven
Java version: 9-ea, vendor: Oracle Corporation
Java home: /home/somewhere/Downloads/jdk-9
Default locale: en_US, platform encoding: UTF-8
OS name: "linux",...

person Karussell    schedule 12.04.2016    source источник
comment
Похоже, у Maven все еще есть некоторые проблемы. Вы можете попробовать этот проект: github.com/forax/pro   -  person user1735594    schedule 22.05.2017


Ответы (6)


Да, он готов сейчас. Кое-что еще в процессе, но в целом можно использовать. Взгляните на мой проект в качестве примера.

person King Nike    schedule 10.01.2017
comment
В проекте, которым вы поделились, используются плагины компилятора и jar, но мы будем получать больше плагинов, таких как jlink, jmod, jdeps. И проект не предоставляет примеры с автоматическими модулями и безымянными модулями. Я думаю, что команда Maven все еще работает над ними. - person Narendran Solai Sridharan; 08.05.2017
comment
Не знаю, что здесь означает .. но в целом пригодный для использования .. . Слишком общий ответ, я считаю. В идеале следует следовать другому от Майкла вместо того, чтобы быть надежным источником. - person Naman; 01.11.2017
comment
Плагин M2E для Eclipse, похоже, не готов: stackoverflow.com/questions/47228377/ - person Stefan; 11.11.2017

Вот ответ одного члена Maven PMC (меня):

Нет это не так. Роберт Шолте работает над этим. Jigsaw и другие вещи внесли много изменений. Официальных сроков, когда будет предоставлена ​​полная совместимость (Maven + официальные плагины), нет.

Проблема, которую вы видите, на самом деле не Maven, а Plexus Archiver. Обратитесь к их странице GitHub. Если вы считаете, что можете добавить ценность, свяжитесь со списком рассылки maven-dev.

Документация о прогрессе: https://cwiki.apache.org/confluence/display/MAVEN/Java+9+-+Jigsaw

person Michael-O    schedule 12.04.2016
comment
Ах, большое спасибо! Я думал, что где-то читал, что это уже возможно. Вы имеете в виду этот репозиторий github? github.com/codehaus-plexus/plexus-archiver/issues - person Karussell; 13.04.2016
comment
@Karussell Да, это средство отслеживания проблем. Вы также можете попробовать сделать снимок архиватора plexus вручную. - person Michael-O; 13.04.2016

Обновление: теперь должно работать без этого обходного пути.

Проблема уже исправлена ​​командой архиваторов plexus, но еще не выпущена - спасибо Michael-O за то, что указал мне правильное место :) !

Теперь ctomc опубликовал обходной путь в PR 12. использовать старый архиватор plexus версии 2.4.4.:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4.1</version>                    
    <dependencies>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-archiver</artifactId>
            <version>2.4.4</version>
        </dependency>
    </dependencies>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <dependencies>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-archiver</artifactId>
            <version>2.4.4</version>
        </dependency>
    </dependencies>
</plugin>
person Karussell    schedule 13.04.2016

У плагина документации Java все еще есть проблемы в последней версии. (3.0.0.М1)

person petertc    schedule 05.10.2017

Я думаю, что maven готов, для меня следующий фрагмент может сказать maven использовать java 9:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>9</source>
                <target>9</target>
            </configuration>
        </plugin>
    </plugins>
</build>
person Jobanpreet Singh    schedule 01.11.2017
comment
Просто обновление плагина компилятора не оправдывает готовность maven, а в ответе есть ссылка на полную готовность maven. Ответ также не относится к первоначальной ошибке вопроса. - person Naman; 01.11.2017

У меня была такая же проблема, и последний опубликованный недавно плагин maven-javadoc исправил ее. Обновлена ​​зависимость в файле pom до <version>3.0.0-M1</version>.

person Afsanehr    schedule 29.09.2017