2017-07-18 89 views
1

scala-maven-pluginを使用して、scalaとjavaコードの両方でプロジェクトをコンパイルします。私はすでにソースとターゲットを1.7に設定しましたが、なぜMavenがまだ1.5を使用しているのかはわかりません。ソース値1.5のエラーは廃止され、将来のリリースで削除される予定です

は、ここでのpom.xml

<plugin> 
     <groupId>net.alchim31.maven</groupId> 
     <artifactId>scala-maven-plugin</artifactId> 
     <version>3.2.2</version> 
     <executions> 
      <execution> 
      <id>eclipse-add-source</id> 
      <goals> 
       <goal>add-source</goal> 
      </goals> 
      </execution> 
      <execution> 
      <id>scala-compile-first</id> 
      <phase>process-resources</phase> 
      <goals> 
       <goal>compile</goal> 
      </goals> 
      </execution> 
      <execution> 
      <id>scala-test-compile-first</id> 
      <phase>process-test-resources</phase> 
      <goals> 
       <goal>testCompile</goal> 
      </goals> 
      </execution> 
      <execution> 
      <id>attach-scaladocs</id> 
      <phase>verify</phase> 
      <goals> 
       <goal>doc-jar</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <scalaVersion>${scala.version}</scalaVersion> 
      <recompileMode>incremental</recompileMode> 
      <useZincServer>true</useZincServer> 
      <args> 
      <arg>-unchecked</arg> 
      <arg>-deprecation</arg> 
      <arg>-feature</arg> 
      </args> 
      <jvmArgs> 
      <jvmArg>-Xms1024m</jvmArg> 
      <jvmArg>-Xmx1024m</jvmArg> 
      <jvmArg>-XX:PermSize=${PermGen}</jvmArg> 
      <jvmArg>-XX:MaxPermSize=${MaxPermGen}</jvmArg> 
      </jvmArgs> 
      <javacArgs> 
      <javacArg>-source</javacArg> 
      <javacArg>1.7</javacArg> 
      <javacArg>-target</javacArg> 
      <javacArg>1.7</javacArg> 
      <javacArg>-Xlint:all,-serial,-path,-options</javacArg> 
      </javacArgs> 
     </configuration> 
     </plugin> 

で私のプラグインだと、この出力誤差は私が

[warn] implicit def toDisplayTraversableFunctions[T <: Product](traversable: Traversable[T]): DisplayTraversableFunctions[T] = new DisplayTraversableFunctions[T](traversable) 
[warn]    ^
[warn] two warnings found 
[error] /Users/jzhang/github/zeppelin/spark/src/main/java/org/apache/zeppelin/spark/DepInterpreter.java:158: error: diamond operator is not supported in -source 1.5 
[error]  settings.explicitParentLoader_$eq(new Some<>(Thread.currentThread() 

を参照してくださいしかし、私はJDK8をusignています確信しています。あなたのよう

<properties> 
    <maven.compiler.source>1.8</maven.compiler.source> 
    <maven.compiler.target>1.8</maven.compiler.target> 
</properties> 

java version "1.8.0_45" 
Java(TM) SE Runtime Environment (build 1.8.0_45-b14) 
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) 

MavenはまたJDK8

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=1024M; support was removed in 8.0 
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) 
Maven home: /Users/jzhang/Java/lib/apache-maven-3.3.9 
Java version: 1.8.0_45, vendor: Oracle Corporation 
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "mac os x", version: "10.11.6", arch: "x86_64", family: "mac" 
+0

Mavenのは「右」のJavaコンパイラを使用していることをあなたは確かにいますか?どのようにMavenを起動しますか? 'java -version'コマンドを実行した場合の出力は? – gtosto

+0

私はJDK 8を使用しています。javaバージョン「1.8.0_45」の出力は Java(TM)SEランタイム環境(ビルド1.8.0_45-b14) Java HotSpot(TM)64ビットサーバVM 25.45-b02、mixed mode) – zjffdu

+0

私はそれが愚かな質問だと知っていますが、 'mvn -v'の出力は何ですか? scalaプラグインの動作に関する詳細情報を収集するために、デバッグフラグ(mvn -X)でmavenを起動することができます。 – gtosto

答えて

2

これらの日があることこれらの事前定義されたプロパティを使用しているようだコンパイラのソースとターゲットのバージョンを設定するための典型方法を使用しますすでに述べたように、これらはデフォルトで1.5になります。これは、Mavenが常に「コンベンションオーバーコンベンション」に関するものであったため、このデフォルト値はJava 1.5がまだ光沢があり新しくなったときに定義されたためです。残念ながら、Java 1.5に依存していて(これらの値を指定していない)既存のプロジェクトが破損する可能性があるため、これを変更することは困難でした。

+0

そのプロジェクトは最新のMavenを持っていますが、それでもJava 1.5はありますか?道のりは、みんな! ;) –

0

デフォルトでMavenはJava 1.5コンパイラをインストールします。具体的には、Java 1.8をpom.xmlファイルに割り当てる必要があります。 Mavenのは、様々なプラグインの組み合わせに過ぎないので、我々はコンパイラプラグインを追加し、次のコードを追加することによって、Javaコンパイラのバージョンを指定する必要があります。

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.0.2</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
関連する問題