Christian Kadner created BAHIR-139: -------------------------------------- Summary: Scala-maven-plugin does not respect Java compile level Key: BAHIR-139 URL: https://issues.apache.org/jira/browse/BAHIR-139 Project: Bahir Issue Type: Bug Components: Build Affects Versions: Spark-2.2.0 Environment: OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-2ubuntu0.16.04.2-b14) OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode) Reporter: Christian Kadner Assignee: Christian Kadner Fix For: Spark-2.2.1
While working on PR [#28|https://github.com/apache/bahir/pull/28] we found that the [scala-maven-plugin|https://mvnrepository.com/artifact/net.alchim31.maven/scala-maven-plugin/3.2.2] does not respect the Java version ({{<java.version>1.8</java.version>}}) as configured by Java compile arguments {{-source}} and {{-target}}. *[Bahir Scala-Maven-Plugin Configuration|https://github.com/apache/bahir/blob/3204f34aae679dd95c7fa5bdc9071fb2f4e52c16/pom.xml#L532]:* {code:xml|title=pom.xml} <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.2.2</version> ... <configuration> <scalaVersion>${scala.version}</scalaVersion> <recompileMode>incremental</recompileMode> <useZincServer>true</useZincServer> ... <javacArgs> <javacArg>-source</javacArg> <javacArg>${java.version}</javacArg> <javacArg>-target</javacArg> <javacArg>${java.version}</javacArg> <javacArg>-Xlint:all,-serial,-path</javacArg> </javacArgs> </configuration> {code} *Compile PR #28:* {code} [bahir_pr28]$ mvn scala:compile -pl datasource-webhdfs {code} *Compile Errors:* {code} ... [ERROR] warning: [options] bootstrap class path not set in conjunction with -source 1.6 [ERROR] datasource-webhdfs/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java:286: error: diamond operator is not supported in -source 1.6 [ERROR] this.restCsrfMethodsToIgnore = new HashSet<>(); [ERROR] ^ [ERROR] (use -source 7 or higher to enable diamond operator) [ERROR] datasource-webhdfs/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java:773: error: multi-catch statement is not supported in -source 1.6 [ERROR] } catch (NoSuchMethodException | SecurityException [ERROR] ^ [ERROR] (use -source 7 or higher to enable multi-catch statement) [ERROR] 2 errors [ERROR] 1 warning ... {code} *Maven DEBUG Output:* {code:title=mvn -X compile -pl datasource-webhdfs} ... [INFO] --- scala-maven-plugin:3.2.2:compile (scala-compile-first) @ spark-datasource-webhdfs_2.11 --- [DEBUG] Configuring mojo net.alchim31.maven:scala-maven-plugin:3.2.2:compile from plugin realm ClassRealm[plugin>net.alchim31.maven:scala-maven-plugin:3.2.2, parent: sun.misc.Launcher$AppClassLoader@74a14482] [DEBUG] Configuring mojo 'net.alchim31.maven:scala-maven-plugin:3.2.2:compile' with basic configurator --> [DEBUG] (f) analysisCacheFile = /projects/bahir_pr28/datasource-webhdfs/target/analysis/compile [DEBUG] (f) args = [-unchecked, -deprecation, -feature] [DEBUG] (f) checkMultipleScalaVersions = true [DEBUG] (f) compileOrder = mixed [DEBUG] (f) displayCmd = false [DEBUG] (f) encoding = UTF-8 [DEBUG] (f) failOnMultipleScalaVersions = false [DEBUG] (f) forceUseArgFile = false [DEBUG] (f) fork = true [DEBUG] (f) javacArgs = [-source, 1.8, -target, 1.8, -Xlint:all,-serial,-path] [DEBUG] (f) javacGenerateDebugSymbols = true [DEBUG] (f) jvmArgs = [-Xms1024m, -Xmx1024m, -XX:ReservedCodeCacheSize=512m] [DEBUG] (f) notifyCompilation = true [DEBUG] (f) outputDir = /projects/bahir_pr28/datasource-webhdfs/target/scala-2.11/classes [DEBUG] (f) pluginArtifacts = [net.alchim31.maven:scala-maven-plugin:maven-plugin:3.2.2:,... [DEBUG] (f) recompileMode = incremental [DEBUG] (f) scalaClassName = scala.tools.nsc.Main [DEBUG] (f) scalaOrganization = org.scala-lang [DEBUG] (f) scalaVersion = 2.11.8 [DEBUG] (f) sendJavaToScalac = true [DEBUG] (f) session = org.apache.maven.execution.MavenSession@7a6ebe1e [DEBUG] (f) source = 1.6 [DEBUG] (f) sourceDir = /projects/bahir_pr28/datasource-webhdfs/src/main/java/../scala [DEBUG] (f) target = 1.6 [DEBUG] (f) useCanonicalPath = true [DEBUG] (f) useZincServer = true [DEBUG] (f) zincPort = 3030 [DEBUG] -- end configuration -- ... {code} *Notice:* {code} [DEBUG] (f) javacArgs = [-source, 1.8, -target, 1.8, -Xlint:all,-serial,-path] [DEBUG] (f) source = 1.6 [DEBUG] (f) target = 1.6 {code} Apparently the compile version defaults to Java 1.6 when the [{{source}}|http://davidb.github.io/scala-maven-plugin/compile-mojo.html#source] and [{{target}}|http://davidb.github.io/scala-maven-plugin/compile-mojo.html#target] elements are not explicitly set as part of the scala-maven-plugin {{<configuration>}}. *Proposed Fix:* Add the {{<source>}} and {{<target>}} elements to the scala-maven-plugin {{<configuration>}}: {code:xml} <source>${java.version}</source> <target>${java.version}</target> {code} {code:xml|title=pom.xml} <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.2.2</version> ... <configuration> <scalaVersion>${scala.version}</scalaVersion> <recompileMode>incremental</recompileMode> <useZincServer>true</useZincServer> ... <source>${java.version}</source> <target>${java.version}</target> <javacArgs> <javacArg>-source</javacArg> <javacArg>${java.version}</javacArg> <javacArg>-target</javacArg> <javacArg>${java.version}</javacArg> <javacArg>-Xlint:all,-serial,-path</javacArg> </javacArgs> </configuration> {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)