[ 
https://issues.apache.org/jira/browse/BAHIR-139?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16199537#comment-16199537
 ] 

Christian Kadner commented on BAHIR-139:
----------------------------------------

Just fyi, the scala-maven-plugin can pick up the Java compile version from mvn 
command line arguments like this: 
{code}
mvn clean package \
    -pl datasource-webhdfs \
    -Dmaven.compiler.source=1.8 \
    -Dmaven.compiler.target=1.8
{code}

> 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
>              Labels: build
>             Fix For: Spark-2.2.1
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> 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 Errors PR #28:*
> {code}
> [bahir_pr28]$ mvn scala:compile -pl datasource-webhdfs
> {code}
> {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)

Reply via email to