javacOptions in Compile configuration (not compile task) (#29459)

This commit is contained in:
Christopher Batey 2020-08-05 13:12:29 +01:00 committed by GitHub
parent 531553ca27
commit faada69ab4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 39 additions and 28 deletions

View file

@ -108,12 +108,14 @@ object AkkaBuild {
scalacOptions in Compile ++= (if (allWarnings) Seq("-deprecation") else Nil), scalacOptions in Compile ++= (if (allWarnings) Seq("-deprecation") else Nil),
scalacOptions in Test := (scalacOptions in Test).value.filterNot(opt => scalacOptions in Test := (scalacOptions in Test).value.filterNot(opt =>
opt == "-Xlog-reflective-calls" || opt.contains("genjavadoc")), 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), JdkOptions.targetJdkJavacOptions(targetSystemJdk.value, optionalDir(jdk8home.value), fullJavaHomes.value),
javacOptions in test ++= DefaultJavacOptions ++ javacOptions in Compile ++= (if (allWarnings) Seq("-Xlint:deprecation") else Nil),
JdkOptions.targetJdkJavacOptions(targetSystemJdk.value, optionalDir(jdk8home.value), fullJavaHomes.value), javacOptions in doc := Seq(),
javacOptions in compile ++= (if (allWarnings) Seq("-Xlint:deprecation") else Nil),
javacOptions in doc ++= Seq(),
crossVersion := CrossVersion.binary, crossVersion := CrossVersion.binary,

View file

@ -33,8 +33,7 @@ object AkkaDisciplinePlugin extends AutoPlugin {
// references to deprecated PARSER fields in generated message formats? // references to deprecated PARSER fields in generated message formats?
"akka-distributed-data", "akka-distributed-data",
// references to deprecated PARSER fields in generated message formats? // references to deprecated PARSER fields in generated message formats?
"akka-cluster-sharding-typed", "akka-cluster-sharding-typed")
)
val looseProjects = Set( val looseProjects = Set(
"akka-actor", "akka-actor",
@ -77,9 +76,10 @@ object AkkaDisciplinePlugin extends AutoPlugin {
), ),
Test / scalacOptions --= testUndicipline, Test / scalacOptions --= testUndicipline,
Compile / javacOptions ++= ( Compile / javacOptions ++= (
if (!nonFatalJavaWarningsFor(name.value)) Seq("-Werror", "-Xlint:deprecation", "-Xlint:unchecked") if (!nonFatalJavaWarningsFor(name.value)) Seq("-Werror", "-Xlint:deprecation", "-Xlint:unchecked")
else Seq.empty else Seq.empty
), ),
Compile / javacOptions in doc := Seq(),
Compile / scalacOptions ++= (CrossVersion.partialVersion(scalaVersion.value) match { Compile / scalacOptions ++= (CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, 13)) => case Some((2, 13)) =>
disciplineScalacOptions -- Set( disciplineScalacOptions -- Set(

View file

@ -15,7 +15,8 @@ import sbt.librarymanagement.VersionNumber
object JdkOptions extends AutoPlugin { object JdkOptions extends AutoPlugin {
object autoImport { object autoImport {
val jdk8home = settingKey[String]("JDK 8 home. Only needs to be set when it cannot be auto-detected by sbt"); 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._ 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 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( selectOptions(
targetSystemJdk, targetSystemJdk,
jdk8home, jdk8home,
@ -40,9 +44,11 @@ object JdkOptions extends AutoPlugin {
// EnvelopeBuffer.class with 'javap -c': it should refer to // EnvelopeBuffer.class with 'javap -c': it should refer to
//""java/nio/ByteBuffer.clear:()Ljava/nio/Buffer" and not //""java/nio/ByteBuffer.clear:()Ljava/nio/Buffer" and not
// "java/nio/ByteBuffer.clear:()Ljava/nio/ByteBuffer". Issue #27079 // "java/nio/ByteBuffer.clear:()Ljava/nio/ByteBuffer". Issue #27079
(java8home: File) => Seq("-release", "8", "-javabootclasspath", java8home + "/jre/lib/rt.jar") (java8home: File) => Seq("-release", "8", "-javabootclasspath", java8home + "/jre/lib/rt.jar"))
) def targetJdkJavacOptions(
def targetJdkJavacOptions(targetSystemJdk: Boolean, jdk8home: Option[File], fullJavaHomes: Map[String, File]): Seq[String] = targetSystemJdk: Boolean,
jdk8home: Option[File],
fullJavaHomes: Map[String, File]): Seq[String] =
selectOptions( selectOptions(
targetSystemJdk, targetSystemJdk,
jdk8home, jdk8home,
@ -50,23 +56,26 @@ object JdkOptions extends AutoPlugin {
Nil, Nil,
// '-release 8' would be a neater option here, but is currently not an // '-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 // 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) if (targetSystemJdk)
Nil Nil
else if (isJdk8) else if (isJdk8)
jdk8options jdk8options
else jdk8home.orElse(fullJavaHomes.get("8")) match { else
case Some(java8home) => jdk8home.orElse(fullJavaHomes.get("8")) match {
jdk11options(java8home) case Some(java8home) =>
case None => jdk11options(java8home)
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") 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( val targetJdkSettings = Seq(targetSystemJdk := false, jdk8home := sys.env.get("JAVA_8_HOME").getOrElse(""))
targetSystemJdk := false,
jdk8home := sys.env.get("JAVA_8_HOME").getOrElse(""),
)
} }