Discover JDK in $JAVA_HOME (#25457)
This commit is contained in:
parent
487d32e16f
commit
36224f924b
1 changed files with 22 additions and 7 deletions
|
|
@ -6,6 +6,7 @@ package akka
|
||||||
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
import akka.CrossJava.nullBlank
|
||||||
import sbt._
|
import sbt._
|
||||||
|
|
||||||
import scala.annotation.tailrec
|
import scala.annotation.tailrec
|
||||||
|
|
@ -95,9 +96,9 @@ object CrossJava {
|
||||||
}
|
}
|
||||||
|
|
||||||
object JavaDiscoverConfig {
|
object JavaDiscoverConfig {
|
||||||
class LinuxDiscoverConfig(base: File) extends JavaDiscoverConf {
|
private val JavaHomeDir = """(java-|jdk-?)(1\.)?([0-9]+).*""".r
|
||||||
val JavaHomeDir = """(java-|jdk-?)(1\.)?([0-9]+).*""".r
|
|
||||||
|
|
||||||
|
class LinuxDiscoverConfig(base: File) extends JavaDiscoverConf {
|
||||||
def javaHomes: Vector[(String, File)] =
|
def javaHomes: Vector[(String, File)] =
|
||||||
wrapNull(base.list())
|
wrapNull(base.list())
|
||||||
.collect {
|
.collect {
|
||||||
|
|
@ -107,24 +108,22 @@ object CrossJava {
|
||||||
|
|
||||||
class MacOsDiscoverConfig extends JavaDiscoverConf {
|
class MacOsDiscoverConfig extends JavaDiscoverConf {
|
||||||
val base: File = file("/Library") / "Java" / "JavaVirtualMachines"
|
val base: File = file("/Library") / "Java" / "JavaVirtualMachines"
|
||||||
val JavaHomeDir = """jdk-?(1\.)?([0-9]+).*""".r
|
|
||||||
|
|
||||||
def javaHomes: Vector[(String, File)] =
|
def javaHomes: Vector[(String, File)] =
|
||||||
wrapNull(base.list())
|
wrapNull(base.list())
|
||||||
.collect {
|
.collect {
|
||||||
case dir@JavaHomeDir(m, n) =>
|
case dir@JavaHomeDir(_, m, n) =>
|
||||||
JavaVersion(nullBlank(m) + n).toString -> (base / dir / "Contents" / "Home")
|
JavaVersion(nullBlank(m) + n).toString -> (base / dir / "Contents" / "Home")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class WindowsDiscoverConfig extends JavaDiscoverConf {
|
class WindowsDiscoverConfig extends JavaDiscoverConf {
|
||||||
val base: File = file("C://Program Files/Java")
|
val base: File = file("C://Program Files/Java")
|
||||||
val JavaHomeDir = """jdk-?(1\.)?([0-9]+).*""".r
|
|
||||||
|
|
||||||
def javaHomes: Vector[(String, File)] =
|
def javaHomes: Vector[(String, File)] =
|
||||||
wrapNull(base.list())
|
wrapNull(base.list())
|
||||||
.collect {
|
.collect {
|
||||||
case dir@JavaHomeDir(m, n) => JavaVersion(nullBlank(m) + n).toString -> (base / dir)
|
case dir@JavaHomeDir(_, m, n) => JavaVersion(nullBlank(m) + n).toString -> (base / dir)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -143,12 +142,28 @@ object CrossJava {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class JavaHomeDiscoverConfig extends JavaDiscoverConf {
|
||||||
|
def javaHomes: Vector[(String, File)] =
|
||||||
|
sys.env.get("JAVA_HOME")
|
||||||
|
.map(new java.io.File(_))
|
||||||
|
.filter(_.exists())
|
||||||
|
.flatMap { javaHome =>
|
||||||
|
val base = javaHome.getParentFile
|
||||||
|
javaHome.getName match {
|
||||||
|
case dir@JavaHomeDir(_, m, n) => Some(JavaVersion(nullBlank(m) + n).toString -> (base / dir))
|
||||||
|
case _ => None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.toVector
|
||||||
|
}
|
||||||
|
|
||||||
val configs = Vector(
|
val configs = Vector(
|
||||||
new JabbaDiscoverConfig,
|
new JabbaDiscoverConfig,
|
||||||
new LinuxDiscoverConfig(file("/usr") / "java"),
|
new LinuxDiscoverConfig(file("/usr") / "java"),
|
||||||
new LinuxDiscoverConfig(file("/usr") / "lib" / "jvm"),
|
new LinuxDiscoverConfig(file("/usr") / "lib" / "jvm"),
|
||||||
new MacOsDiscoverConfig,
|
new MacOsDiscoverConfig,
|
||||||
new WindowsDiscoverConfig
|
new WindowsDiscoverConfig,
|
||||||
|
new JavaHomeDiscoverConfig,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue