简体   繁体   English

maven-release-plugin是否与Java 9兼容?

[英]Is maven-release-plugin compatible with Java 9?

I just tried to release my Java 9 compatible project with maven-release-plugin . 我只是试图用maven-release-plugin发布我的Java 9兼容项目。 However, it failed in maven-compiler-plugin with 但是,它在maven-compiler-plugin失败了

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project email: Fatal error compiling: invalid target release: 9 无法执行目标org.apache.maven.plugins:maven-compiler-plugin:3.7.0:项目电子邮件上的编译(默认编译):致命错误编译:无效目标版本:9

Funny thing is that maven-compiler-plugin works fine in case I run it standalone. 有趣的是maven-compiler-plugin工作正常,以防我独立运行它。 My setup: 我的设置:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>9</source>
                <target>9</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <configuration>
                <autoVersionSubmodules>true</autoVersionSubmodules>
                <tagNameFormat>v@{project.version}</tagNameFormat>
            </configuration>
        </plugin>

Maven version 3.5.0. Maven版本3.5.0。

mvn clean install works fine; mvn clean install工作正常;

mvn release:prepare release:perform -DignoreSnapshots=true fails with above exception. mvn release:prepare release:perform -DignoreSnapshots=true失败,但有异常。

Debug output: 调试输出:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare (default-cli) on project blynk: Maven execution failed, exit code: '1' -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare (default-cli) on project blynk: Maven execution failed, exit code: '1'
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
Caused by: org.apache.maven.plugin.MojoExecutionException: Maven execution failed, exit code: '1'
    at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:290)
    at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:240)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 21 more
Caused by: org.apache.maven.shared.release.ReleaseExecutionException: Maven execution failed, exit code: '1'
    at org.apache.maven.shared.release.phase.AbstractRunGoalsPhase.execute(AbstractRunGoalsPhase.java:91)
    at org.apache.maven.shared.release.phase.RunPrepareGoalsPhase.execute(RunPrepareGoalsPhase.java:44)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:234)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:169)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:146)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:107)
    at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:286)
    ... 24 more
Caused by: org.apache.maven.shared.release.exec.MavenExecutorException: Maven execution failed, exit code: '1'
    at org.apache.maven.shared.release.exec.InvokerMavenExecutor.executeGoals(InvokerMavenExecutor.java:433)
    at org.apache.maven.shared.release.exec.AbstractMavenExecutor.executeGoals(AbstractMavenExecutor.java:114)
    at org.apache.maven.shared.release.phase.AbstractRunGoalsPhase.execute(AbstractRunGoalsPhase.java:85)
    ... 30 more

[INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project email: Fatal error compiling: invalid target release: 9 -> [Help 1]
[INFO] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project email: Fatal error compiling
[INFO]  at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
[INFO]  at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
[INFO]  at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
[INFO]  at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
[INFO]  at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
[INFO]  at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
[INFO]  at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
[INFO]  at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
[INFO]  at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
[INFO]  at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
[INFO]  at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
[INFO]  at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
[INFO]  at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
[INFO]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[INFO]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[INFO]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[INFO]  at java.lang.reflect.Method.invoke(Method.java:498)
[INFO]  at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
[INFO]  at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
[INFO]  at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
[INFO]  at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[INFO] Caused by: org.apache.maven.plugin.MojoExecutionException: Fatal error compiling
[INFO]  at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1086)
[INFO]  at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:168)
[INFO]  at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
[INFO]  at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
[INFO]  ... 20 more
[INFO] Caused by: org.codehaus.plexus.compiler.CompilerException: invalid target release: 9
[INFO]  at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:173)
[INFO]  at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:174)
[INFO]  at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1075)
[INFO]  ... 23 more
[INFO] Caused by: java.lang.IllegalArgumentException: invalid target release: 9
[INFO]  at com.sun.tools.javac.main.OptionHelper$GrumpyHelper.error(OptionHelper.java:103)
[INFO]  at com.sun.tools.javac.main.Option$12.process(Option.java:216)
[INFO]  at com.sun.tools.javac.api.JavacTool.processOptions(JavacTool.java:217)
[INFO]  at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:156)
[INFO]  at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:107)
[INFO]  at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:64)
[INFO]  at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:125)
[INFO]  ... 25 more

According to the Java+9+-+Jigsaw which was updated very recently there is no change required or desired in the maven-release-plugin to be compatible with JDK9. 根据最近更新的Java + 9 + - + Jigsawmaven-release-plugin不需要或不需要更改以与JDK9兼容。

Additionally from the logs shared in the question the output in your case seems to be because of a misconfigured Maven with Java version less than 9 . 此外,根据问题中共享的日志,您的案例中的输出似乎是因为配置错误的Maven, Java版本低于9


While I was facing a similar issue, I had noticed that the java version used by Maven when executed using sudo and normally on command prompt were different. 虽然我遇到了类似的问题,但我注意到Maven在使用sudo执行时使用的java版本通常在命令提示符下是不同的。


To stick to consistent version of java used by maven make sure you have a mavenrc configured. 要坚持maven使用的java的一致版本,请确保配置了mavenrc You can do that in a similar way to this: 你可以用类似的方式做到这一点:

vi ~/.mavenrc

and then save it with content as follows: 然后使用以下内容保存它:

export PATH
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
export PATH=${PATH}:$JAVA_HOME/bin

Execute 执行

mvn -version

and make sure its output is consistent via both command prompt and intelliJ terminal. 并通过命令提示符intelliJ终端确保其输出是一致的

========== If you use heroku =========== ==========如果你使用heroku ===========

Go to system.properties and set: 转到system.properties并设置:

java.runtime.version=9

Also add the following to the pom.xml for maven: 还要将以下内容添加到maven的pom.xml中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.6.2</version>
    <configuration>
        <source>9</source>
        <target>9</target>
    </configuration>
</plugin>

Check this out. 看看这个

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM