【问题标题】:How to instruct gradle's scala plugin to pick specific JVM among installed ones?如何指示 gradle 的 scala 插件在已安装的 JVM 中选择特定的 JVM?
【发布时间】:2014-07-25 12:43:07
【问题描述】:
【问题讨论】:
标签:
scala
gradle
jvm
scalatra
【解决方案1】:
如何指示 gradle 的 scala 插件在已安装的 JVM 中选择特定的 JVM?
目前不支持此功能。最好的解决方案是使用所需的 JVM 运行 Gradle 本身。 可能可以通过...设置不同的 JVM 引导类路径...
tasks.withType(ScalaCompile) {
scalaCompileOptions.with {
useAnt = false
fork = true
forkOptions.jvmArgs = [...]
}
}
...,但您必须自己弄清楚细节(请参阅 JVM 文档)。此外,您还必须知道 JVM 安装路径。
【解决方案2】:
scalac编译器有特殊参数
–javabootclasspath 路径
覆盖 Java 引导类路径。
--javaextdirs 路径
覆盖 Java extdirs 类路径。
您必须使用 additionalParameters 参数从 gradle scala 插件传递这些参数
这种方法不需要分叉
allprojects {
tasks.withType(ScalaCompile) {
if (sourceCompatibility == '1.7') {
scalaCompileOptions.with {
def jdk7rt = new File("$System.env.JAVA7_HOME", "jre/lib/rt.jar").canonicalPath
def jdk7ext = new File("$System.env.JAVA7_HOME", "jre/lib/ext").canonicalPath
additionalParameters = ["-javabootclasspath $jdk7rt".toString(), "-javaextdirs $jdk7ext".toString()]
}
}
}
}
我在我的操作系统上使用这种方法,默认使用 JVM 1.7 来使用 JDK8 编译一些需要 javafx8 的子项目。所以它应该适用于你的情况。