我有一个看起来像这样的 Scala 脚本:
#!/bin/sh
PATH=${SCALA_HOME}:${PATH}
exec scala "$0" "$@"
!#
Console.println("Hello, world!")
Gradle 中是否有某种方法可以设置要使用的 Scala 版本,是否隐式设置SCALA_HOME
并执行脚本?
There is no built-in feature for this. The way to tackle this is to declare two tasks: A Copy task
that downloads the Scala distribution and unpacks it to a local directory, and an Exec
task that sets the SCALA_HOME
environment variable to the copy task's output directory and executes your script.
这是从 Gradle 执行 Scala 的示例。这是一个使用 Scalafmt 构建插件的新尝试。值得注意的是使用静态值是多么讨厌。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.geirsson:scalafmt-core_2.11:0.4.2'
}
}
task scalafmt << {
String target = "object FormatMe { List(Split(Space, 0).withPolicy(SingleLineBlock(close)), Split(Newline, 1).withPolicy{ case Decision(t@FormatToken(_, `close`, _), s) => Decision(t, List(Split(Newline, 0)))}.withIndent(2, close, Right)) }"
def config = org.scalafmt.config.ScalafmtConfig$.MODULE$.default
def range = scala.collection.immutable.Set$EmptySet$.MODULE$
println org.scalafmt.Scalafmt.format(target, config, range).formattedCode()
}
我知道这不是主题,但我找不到其他地方可以放置它,我希望它对那些因与我相同的原因而最终来到这里的人有一些价值。
Gradle 有一个 Exec 任务,您可以在其中设置要传递给新进程的环境。你可以通过它传递 SCALA_HOME 。