私はMavenを使用してjarを作成しようとしていますが、エラーが発生し続けます
ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler-plugin:3.1:compile
(default-compile) on project Application: Fatal error compiling: invalid target release: 1.8 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.Apache.org/confluence/display/MAVEN/MojoExecutionException
mvn -vの出力
mvn -version
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T09:29:23-08:00)
Maven home: /usr/local/Cellar/maven/3.2.5/libexec
Java version: 1.6.0_65, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.10.1", Arch: "x86_64", family: "mac"
だから、1.6jdkを指しているように見えます
しかし、私は1.8 jdkを持っています
Javaバージョン
Java -version
Java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
POM.xml
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.brian.ridecellchallenge</groupId>
<artifactId>Application</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.Apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.group.id.Launcher1</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
</project>
Mavenは、設定されているJava_HOME環境変数に依存しています。 OSに従って設定し、ビルドを再実行します。
編集:エクスポートを使用して変数を設定します。
export Java_HOME=/path/to/Java
MacOSユーザーとして、Terminal
を開き、ファイルを作成または編集します.bash_profile
(ユーザーのホームディレクトリ内)に次のスニペットを配置します:
export Java_HOME=`/usr/libexec/Java_home -v 1.8`
そのファイルを保存し、ターミナルインスタンスを再度開きます。そこでexport
をコマンドとして実行すると、有効なJava_HOME
JDK 8インストールの場所。 IDEを再起動すると、mavenがあなたを構築できるはずですJava target 1.8
コード。
コンパイラプラグインで設定を試すことができます。私の地元の仕事
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<executable><!--path-to-your-Java8-home-directoru--></executable>
<compilerVersion>1.8</compilerVersion>
</configuration>
</plugin>
Mavenはビルドしたいjdkのバージョンを知らないためです。で試すことができます
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
Maven-compiler-pluginが構成を無視しているように見えることに気付きました
<source>1.8</source>
<target>1.8</target>
実際、-X mavenのオプションを使用してプロジェクトをビルドすると、maven-compiler-pluginの構成でソースとターゲットが強制的に1.6になっていることがわかります。
[DEBUG] --------------------------------------------------------------
[DEBUG] Goal: org.Apache.maven.plugins:maven-compiler-plugin:3.3:testCompile (default-testCompile)
[DEBUG] Style: Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
<basedir default-value="${basedir}"/>
<buildDirectory default-value="${project.build.directory}"/>
<classpathElements default-value="${project.testClasspathElements}"/>
<compileSourceRoots default-value="${project.testCompileSourceRoots}"/>
<compilerId default-value="javac">${maven.compiler.compilerId}</compilerId>
<compilerReuseStrategy default-value="${reuseCreated}">${maven.compiler.compilerReuseStrategy} </compilerReuseStrategy>
<compilerVersion>${maven.compiler.compilerVersion}</compilerVersion>
<debug default-value="true">${maven.compiler.debug}</debug>
<debuglevel>${maven.compiler.debuglevel}</debuglevel>
<encoding default-value="${project.build.sourceEncoding}">UTF-8</encoding>
<executable>${maven.compiler.executable}</executable>
<failOnError default-value="true">${maven.compiler.failOnError}</failOnError>
<forceJavacCompilerUse default-value="false">${maven.compiler.forceJavacCompilerUse}</forceJavacCompilerUse>
<fork default-value="false">${maven.compiler.fork}</fork>
<generatedTestSourcesDirectory default-value="${project.build.directory}/generated-test-sources/test-annotations"/>
<maxmem>${maven.compiler.maxmem}</maxmem>
<meminitial>${maven.compiler.meminitial}</meminitial>
<mojoExecution default-value="${mojoExecution}"/>
<optimize default-value="false">${maven.compiler.optimize}</optimize>
<outputDirectory default-value="${project.build.testOutputDirectory}"/>
<project default-value="${project}"/>
<session default-value="${session}"/>
<showDeprecation default-value="false">${maven.compiler.showDeprecation}</showDeprecation>
<showWarnings default-value="false">${maven.compiler.showWarnings}</showWarnings>
<skip>${maven.test.skip}</skip>
<skipMultiThreadWarning default-value="false">${maven.compiler.skipMultiThreadWarning}</skipMultiThreadWarning>
<source default-value="1.5">1.6</source>
<staleMillis default-value="0">${lastModGranularityMs}</staleMillis>
<target default-value="1.5">1.6</target>
<testSource>${maven.compiler.testSource}</testSource>
<testTarget>${maven.compiler.testTarget}</testTarget>
<useIncrementalCompilation default-value="true">${maven.compiler.useIncrementalCompilation}</useIncrementalCompilation>
<verbose default-value="false">${maven.compiler.verbose}</verbose>
Javaコンパイラーに目的のソースとターゲットを使用させることにより、多くの検索と試行の後に問題を解決しました。
<compilerArguments>
<source>1.8</source>
<target>1.8</target>
</compilerArguments>
これにより、javacのパラメーターに上記の2つのパラメーターが追加され、デフォルトが上書きされます。
私の場合、すべてうまくいきます。
注:上記の構成では、mavenは次のようにjavacを呼び出します。
-d [...] -g -nowarn -target 1.6 -source 1.6 -encoding UTF-8 -source 1.8 -target 1.8
最初の2つの「-source」および「-target」パラメーターは、maven-compiler-pluginが使用するデフォルトのパラメーターです。 2番目のパラメーターは、上記の「compilerArguments」の構成のためにプラグインによって追加されたパラメーターです。 javacは最後の数個のパラメーターのみを使用しているように見えます(パラメーターがさらに繰り返される場合、最後のパラメーターがすべての前のパラメーターを上書きします)。
異なるバージョンのmaven-compiler-plugin、異なるバージョンのmavenを使用しました。すべての設定(たとえば、システム変数、Javaまたはmavenなど)の実行に使用されるすべてのスクリプト)を詳細にチェックインしましたが、すべては大丈夫だと確信しています。
奇妙ですが、私の結論は、maven-compiler-pluginにJava 8。
よくわかりませんが、maven.pluginバージョンを更新してみてください
試してみる
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
<version>3.6.1</version>
</plugin>
誰かがEclipse Kepler SR2を使用していて、MavenでプロジェクトをビルドしているときにJava 1.8の問題がある場合は、Eclipse MarketplaceにアクセスしてEclipseのm2eのJava 8サポートを検索してくださいKepler SR2これは私を助け、Mavenは問題なくコンパイルできますJava 1.8ソース。