如何从Gradle执行Scala脚本?

时间:2013-11-12 22:26:16

标签: scala gradle

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

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

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

Console.println("Hello, world!")

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

3 个答案:

答案 0 :(得分:1)

没有内置功能。解决这个问题的方法是声明两个任务:A Copy task下载Scala发行版并将其解压缩到本地目录,Exec任务将SCALA_HOME环境变量设置为复制任务的输出目录并执行你的脚本。

答案 1 :(得分: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()
}

我知道这不是主题,但我无法在其他任何地方找到这个,我希望这对于那些因为我做同样的原因而来到这里的人有一定的价值。

答案 2 :(得分:0)

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