web-dev-qa-db-fra.com

Maven est-il prêt pour le JDK9?

Aujourd'hui, j'ai essayé le dernier jdk9 Build 113 et essayé de compiler mon projet avec le dernier Maven 3.3.9

Ce sont les commandes (trouvées partiellement via Twitter )

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

Mais je reçois cette erreur ... en bref:

[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

Quel est la configuration ou les paramètres Maven corrects à utiliser pour 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",...
51
Karussell

Oui, c'est prêt maintenant. Encore quelques choses en cours, mais généralement utilisables . Découvrez un de mes projets comme exemple.

16
King Nike

Voici la réponse d'un membre de Maven PMC (moi):

Non ce n'est pas. Robert Scholte y travaille. Jigsaw et d'autres choses ont introduit beaucoup de changements. Il n'y a pas de calendrier officiel où la compatibilité complète (plugins officiels Maven +) sera indiquée.

Le problème que vous voyez n’est pas Maven mais Plexus Archiver. Reportez-vous à leur page GitHub. Si vous pensez pouvoir ajouter de la valeur, contactez la liste de diffusion maven-dev.

Documentation d'avancement: https://cwiki.Apache.org/confluence/display/MAVEN/Java+9+-+Jigsaw

37
Michael-O

Mise à jour: devrait fonctionner sans cette solution de contournement maintenant.

Le problème est déjà résolu par l'équipe d'archivage du plexus, mais n'est pas encore publié - merci à Michael-O de m'avoir dirigé au bon endroit :)!

Maintenant, il existe une solution de contournement publiée par ctomc dans PR 12 pour utiliser un ancien archiveur de plexus version 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>
11
Karussell

Le plugin Java doc a toujours des problèmes dans la dernière version. (3.0.0.M1)

1
okwap

Je pense que maven est prêt maintenant, pour moi l'extrait suivant peut dire à maven d'utiliser 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>
1
Jobanpreet Singh

J'ai eu le même problème et le dernier plugin maven-javadoc qui a été publié récemment l'a corrigé. Mise à jour de la dépendance dans le fichier pom en <version>3.0.0-M1</version> 

0
Afsanehr