Maven 准备好用于 JDK9 了吗?
Is Maven ready for JDK9?
今天我用最新的 Maven 3.3.9
试用了 latest jdk9 Build 113 and tried to compile my project
这些是命令(部分找到 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
但我得到 this error ...简而言之:
[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
用于 JDK9 的正确 Maven 配置或参数是什么?
$ 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",...
这是一位 Maven PMC 成员(我)的回答:
不,不是。 Robert Scholte 正在研究它。 Jigsaw 和其他东西引入了很多变化。没有给出完全兼容(Maven + 官方插件)的官方时间表。
您看到的问题其实不是Maven而是Plexus Archiver。请参阅他们的 GitHub 页面。如果您认为可以增加价值,请联系 maven-dev 邮件列表。
进度文档:https://cwiki.apache.org/confluence/display/MAVEN/Java+9+-+Jigsaw
更新:现在应该可以在没有此解决方法的情况下工作。
问题已由 plexus 归档程序团队解决,但尚未发布 - 感谢 Michael-O 为我指明了正确的位置:) !
现在 PR 12 中的 ctomc 发布了一个解决方法来使用旧的 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>
是的,现在已经准备好了。仍在进行中的一些事情,但通常可用。
以 a project of mine 为例。
我遇到了同样的问题,最近发布的最新 maven-javadoc-plugin 修复了它。将 pom 文件中的依赖项更新为 <version>3.0.0-M1</version>
Java 文档插件在上一版本中仍有问题。 (3.0.0.M1)
我认为 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>
今天我用最新的 Maven 3.3.9
试用了 latest jdk9 Build 113 and tried to compile my project这些是命令(部分找到 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
但我得到 this error ...简而言之:
[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
用于 JDK9 的正确 Maven 配置或参数是什么?
$ 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",...
这是一位 Maven PMC 成员(我)的回答:
不,不是。 Robert Scholte 正在研究它。 Jigsaw 和其他东西引入了很多变化。没有给出完全兼容(Maven + 官方插件)的官方时间表。
您看到的问题其实不是Maven而是Plexus Archiver。请参阅他们的 GitHub 页面。如果您认为可以增加价值,请联系 maven-dev 邮件列表。
进度文档:https://cwiki.apache.org/confluence/display/MAVEN/Java+9+-+Jigsaw
更新:现在应该可以在没有此解决方法的情况下工作。
问题已由 plexus 归档程序团队解决,但尚未发布 - 感谢 Michael-O 为我指明了正确的位置:) !
现在 PR 12 中的 ctomc 发布了一个解决方法来使用旧的 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>
是的,现在已经准备好了。仍在进行中的一些事情,但通常可用。 以 a project of mine 为例。
我遇到了同样的问题,最近发布的最新 maven-javadoc-plugin 修复了它。将 pom 文件中的依赖项更新为 <version>3.0.0-M1</version>
Java 文档插件在上一版本中仍有问题。 (3.0.0.M1)
我认为 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>