我如何从Gradle调用sbt任务?
如何从Gradle构建中调用sbt项目上的任务?我希望调用现有的sbt任务,而不是将任务的代码移植并复制到我的Gradle构建中 理想情况下,我希望能够做到这一点,而不需要在我运行的机器上安装sbt 作为一个简单但具体的例子,假设我有以下项目结构:我如何从Gradle调用sbt任务?,gradle,sbt,Gradle,Sbt,如何从Gradle构建中调用sbt项目上的任务?我希望调用现有的sbt任务,而不是将任务的代码移植并复制到我的Gradle构建中 理想情况下,我希望能够做到这一点,而不需要在我运行的机器上安装sbt 作为一个简单但具体的例子,假设我有以下项目结构: parent_directory gradle_project build.gradle [...] sbt_project build.sbt [...] 以及以下build.sbt文件: val hell
parent_directory
gradle_project
build.gradle
[...]
sbt_project
build.sbt
[...]
以及以下build.sbt
文件:
val helloTask = TaskKey[Unit]("hello", "Print hello")
helloTask := println("Hello world!")
我想将build.sbt
中定义的“hello”sbt任务从build.Gradle
中定义的“helloosbt”Gradle任务调用该项目提供了一个名为的独立脚本,该脚本可以直接用于运行sbt,而无需先在机器上运行。这可以通过Gradle项目中的“Exec”任务调用,指定要作为程序参数运行的sbt任务
首先,将sbt
文件从复制到本地项目中。假设sbt脚本已作为gradle_project/sbt extras/sbt
复制到项目中,以下gradle任务将在build.sbt
中执行“hello”任务:
task helloSbt(type: Exec) {
workingDir new File(project.projectDir.parentFile, 'sbt_project')
executable new File(project.projectDir, 'sbt-extras/sbt')
args 'hello'
}