javacOptions in Compile configuration (not compile task) (#29459)
This commit is contained in:
parent
531553ca27
commit
faada69ab4
3 changed files with 39 additions and 28 deletions
|
|
@ -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,
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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(""),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue