From faada69ab4741164ce6ba892623578aa44d31657 Mon Sep 17 00:00:00 2001 From: Christopher Batey Date: Wed, 5 Aug 2020 13:12:29 +0100 Subject: [PATCH] javacOptions in Compile configuration (not compile task) (#29459) --- project/AkkaBuild.scala | 12 ++++---- project/AkkaDisciplinePlugin.scala | 10 +++---- project/JdkOptions.scala | 45 ++++++++++++++++++------------ 3 files changed, 39 insertions(+), 28 deletions(-) diff --git a/project/AkkaBuild.scala b/project/AkkaBuild.scala index 9a6dd92100..fb996f3253 100644 --- a/project/AkkaBuild.scala +++ b/project/AkkaBuild.scala @@ -108,12 +108,14 @@ object AkkaBuild { scalacOptions in Compile ++= (if (allWarnings) Seq("-deprecation") else Nil), scalacOptions in Test := (scalacOptions in Test).value.filterNot(opt => opt == "-Xlog-reflective-calls" || opt.contains("genjavadoc")), - javacOptions in compile ++= DefaultJavacOptions ++ + javacOptions in Compile ++= { + DefaultJavacOptions ++ + JdkOptions.targetJdkJavacOptions(targetSystemJdk.value, optionalDir(jdk8home.value), fullJavaHomes.value) + }, + javacOptions in Test ++= DefaultJavacOptions ++ JdkOptions.targetJdkJavacOptions(targetSystemJdk.value, optionalDir(jdk8home.value), fullJavaHomes.value), - javacOptions in test ++= DefaultJavacOptions ++ - JdkOptions.targetJdkJavacOptions(targetSystemJdk.value, optionalDir(jdk8home.value), fullJavaHomes.value), - javacOptions in compile ++= (if (allWarnings) Seq("-Xlint:deprecation") else Nil), - javacOptions in doc ++= Seq(), + javacOptions in Compile ++= (if (allWarnings) Seq("-Xlint:deprecation") else Nil), + javacOptions in doc := Seq(), crossVersion := CrossVersion.binary, diff --git a/project/AkkaDisciplinePlugin.scala b/project/AkkaDisciplinePlugin.scala index b86361b599..0fdf910559 100644 --- a/project/AkkaDisciplinePlugin.scala +++ b/project/AkkaDisciplinePlugin.scala @@ -33,8 +33,7 @@ object AkkaDisciplinePlugin extends AutoPlugin { // references to deprecated PARSER fields in generated message formats? "akka-distributed-data", // references to deprecated PARSER fields in generated message formats? - "akka-cluster-sharding-typed", - ) + "akka-cluster-sharding-typed") val looseProjects = Set( "akka-actor", @@ -77,9 +76,10 @@ object AkkaDisciplinePlugin extends AutoPlugin { ), Test / scalacOptions --= testUndicipline, Compile / javacOptions ++= ( - if (!nonFatalJavaWarningsFor(name.value)) Seq("-Werror", "-Xlint:deprecation", "-Xlint:unchecked") - else Seq.empty - ), + if (!nonFatalJavaWarningsFor(name.value)) Seq("-Werror", "-Xlint:deprecation", "-Xlint:unchecked") + else Seq.empty + ), + Compile / javacOptions in doc := Seq(), Compile / scalacOptions ++= (CrossVersion.partialVersion(scalaVersion.value) match { case Some((2, 13)) => disciplineScalacOptions -- Set( diff --git a/project/JdkOptions.scala b/project/JdkOptions.scala index 04e3ece7d8..c67a9c78c2 100644 --- a/project/JdkOptions.scala +++ b/project/JdkOptions.scala @@ -15,7 +15,8 @@ import sbt.librarymanagement.VersionNumber object JdkOptions extends AutoPlugin { object autoImport { val jdk8home = settingKey[String]("JDK 8 home. Only needs to be set when it cannot be auto-detected by sbt"); - val targetSystemJdk = settingKey[Boolean]("Target the system JDK instead of building against JDK 8. When this is enabled resulting artifacts may not work on JDK 8!") + val targetSystemJdk = settingKey[Boolean]( + "Target the system JDK instead of building against JDK 8. When this is enabled resulting artifacts may not work on JDK 8!") } import autoImport._ @@ -28,7 +29,10 @@ object JdkOptions extends AutoPlugin { def notOnJdk8[T](values: Seq[T]): Seq[T] = if (isJdk8) Seq.empty[T] else values - def targetJdkScalacOptions(targetSystemJdk: Boolean, jdk8home: Option[File], fullJavaHomes: Map[String, File]): Seq[String] = + def targetJdkScalacOptions( + targetSystemJdk: Boolean, + jdk8home: Option[File], + fullJavaHomes: Map[String, File]): Seq[String] = selectOptions( targetSystemJdk, jdk8home, @@ -40,9 +44,11 @@ object JdkOptions extends AutoPlugin { // EnvelopeBuffer.class with 'javap -c': it should refer to //""java/nio/ByteBuffer.clear:()Ljava/nio/Buffer" and not // "java/nio/ByteBuffer.clear:()Ljava/nio/ByteBuffer". Issue #27079 - (java8home: File) => Seq("-release", "8", "-javabootclasspath", java8home + "/jre/lib/rt.jar") - ) - def targetJdkJavacOptions(targetSystemJdk: Boolean, jdk8home: Option[File], fullJavaHomes: Map[String, File]): Seq[String] = + (java8home: File) => Seq("-release", "8", "-javabootclasspath", java8home + "/jre/lib/rt.jar")) + def targetJdkJavacOptions( + targetSystemJdk: Boolean, + jdk8home: Option[File], + fullJavaHomes: Map[String, File]): Seq[String] = selectOptions( targetSystemJdk, jdk8home, @@ -50,23 +56,26 @@ object JdkOptions extends AutoPlugin { Nil, // '-release 8' would be a neater option here, but is currently not an // option because it doesn't provide access to `sun.misc.Unsafe` #27079 - (java8home: File) => Seq("-source", "8", "-target", "8", "-bootclasspath", java8home + "/jre/lib/rt.jar") - ) + (java8home: File) => Seq("-source", "8", "-target", "8", "-bootclasspath", java8home + "/jre/lib/rt.jar")) - private def selectOptions(targetSystemJdk: Boolean, jdk8home: Option[File], fullJavaHomes: Map[String, File], jdk8options: Seq[String], jdk11options: File => Seq[String]): Seq[String] = + private def selectOptions( + targetSystemJdk: Boolean, + jdk8home: Option[File], + fullJavaHomes: Map[String, File], + jdk8options: Seq[String], + jdk11options: File => Seq[String]): Seq[String] = if (targetSystemJdk) Nil else if (isJdk8) jdk8options - else jdk8home.orElse(fullJavaHomes.get("8")) match { - case Some(java8home) => - jdk11options(java8home) - case None => - throw new MessageOnlyException("A JDK 8 installation was not found, but is required to build Akka. To manually specify a JDK 8 installation, use the \"set every jdk8home := \\\"/path/to/jdk\\\" sbt command. If you have no JDK 8 installation, target your system JDK with the \"set every targetSystemJdk := true\" sbt command, but beware resulting artifacts will not work on JDK 8") - } + else + jdk8home.orElse(fullJavaHomes.get("8")) match { + case Some(java8home) => + jdk11options(java8home) + case None => + throw new MessageOnlyException( + "A JDK 8 installation was not found, but is required to build Akka. To manually specify a JDK 8 installation, use the \"set every jdk8home := \\\"/path/to/jdk\\\" sbt command. If you have no JDK 8 installation, target your system JDK with the \"set every targetSystemJdk := true\" sbt command, but beware resulting artifacts will not work on JDK 8") + } - val targetJdkSettings = Seq( - targetSystemJdk := false, - jdk8home := sys.env.get("JAVA_8_HOME").getOrElse(""), - ) + val targetJdkSettings = Seq(targetSystemJdk := false, jdk8home := sys.env.get("JAVA_8_HOME").getOrElse("")) }