From aff9e0110cd7f4b942e194e1eb979f89fbf64f1f Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Thu, 3 May 2018 00:59:27 -0400 Subject: [PATCH] Accept both 1.x and x for 1.1 to 1.8 --- main/src/main/scala/sbt/Defaults.scala | 4 ++-- main/src/main/scala/sbt/internal/CrossJava.scala | 12 +++++++++++- sbt/src/sbt-test/java/home-discovery/build.sbt | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index c4fa875ac..f3e550205 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -160,9 +160,9 @@ object Defaults extends BuildCommon { scalaHome :== None, apiURL := None, javaHome :== None, - discoveredJavaHomes := sbt.internal.CrossJava.discoverJavaHomes, + discoveredJavaHomes := CrossJava.discoverJavaHomes, javaHomes :== ListMap.empty, - fullJavaHomes := discoveredJavaHomes.value ++ javaHomes.value, + fullJavaHomes := CrossJava.expandJavaHomes(discoveredJavaHomes.value ++ javaHomes.value), testForkedParallel :== false, javaOptions :== Nil, sbtPlugin :== false, diff --git a/main/src/main/scala/sbt/internal/CrossJava.scala b/main/src/main/scala/sbt/internal/CrossJava.scala index c93d44257..1c035a4d8 100644 --- a/main/src/main/scala/sbt/internal/CrossJava.scala +++ b/main/src/main/scala/sbt/internal/CrossJava.scala @@ -10,7 +10,6 @@ package internal import java.io.File import scala.collection.immutable.ListMap -import sbt.io.IO import sbt.io.syntax._ private[sbt] object CrossJava { @@ -44,6 +43,17 @@ private[sbt] object CrossJava { } } + // expand Java versions to 1-8 to 1.x, and vice versa to accept both "1.8" and "8" + private val oneDot = Map((1 to 8).toVector flatMap { i => + Vector(s"$i" -> s"1.$i", s"1.$i" -> s"$i") + }: _*) + def expandJavaHomes(hs: Map[JavaVersion, File]): Map[JavaVersion, File] = + hs flatMap { + case (k, v) => + if (oneDot.contains(k.version)) Vector(k -> v, k.withVersion(oneDot(k.version)) -> v) + else Vector(k -> v) + } + def wrapNull(a: Array[String]): Vector[String] = if (a eq null) Vector() else a.toVector diff --git a/sbt/src/sbt-test/java/home-discovery/build.sbt b/sbt/src/sbt-test/java/home-discovery/build.sbt index b5d79caeb..7dd72c1d1 100644 --- a/sbt/src/sbt-test/java/home-discovery/build.sbt +++ b/sbt/src/sbt-test/java/home-discovery/build.sbt @@ -1,5 +1,5 @@ Global / javaHomes += JavaVersion("6") -> file("/good/old/times/java-6") TaskKey[Unit]("check") := { - assert(fullJavaHomes.value(JavaVersion("6")).getAbsolutePath.contains("java-6")) + assert(fullJavaHomes.value(JavaVersion("1.6")).getAbsolutePath.contains("java-6")) }