1

我有一个看起来像这样的 Scala 脚本:

#!/bin/sh
PATH=${SCALA_HOME}:${PATH}

exec scala "$0" "$@"
!#

Console.println("Hello, world!")

Gradle 中是否有某种方法可以设置要使用的 Scala 版本,是否隐式设置SCALA_HOME并执行脚本?

4

3 回答 3

1

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.

于 2013-11-12T22:52:14.523 回答
0

这是从 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()
}

我知道这不是主题,但我找不到其他地方可以放置它,我希望它对那些因与我相同的原因而最终来到这里的人有一些价值。

于 2016-09-29T22:07:18.747 回答
0

Gradle 有一个 Exec 任务,您可以在其中设置要传递给新进程的环境。你可以通过它传递 SCALA_HOME 。

于 2018-05-03T22:49:03.590 回答