gpt4 book ai didi

gradle - 如何从 Gradle 调用 sbt 任务?

转载 作者:行者123 更新时间:2023-12-04 06:46:58 24 4
gpt4 key购买 nike

如何从 Gradle 构建中调用 sbt 项目上的任务?我想调用现有的 sbt 任务,而不是将任务的代码移植和复制到我的 Gradle 构建中。

理想情况下,我希望能够在不需要在我运行的机器上安装 sbt 的情况下执行此操作。

作为一个简单而具体的例子,假设我有以下项目结构:

parent_directory
gradle_project
build.gradle
[...]
sbt_project
build.sbt
[...]

和下面的 build.sbt 文件:

val helloTask = TaskKey[Unit]("hello", "Print hello")
helloTask := println("Hello world!")

我想从 build.gradle 中定义的“helloSbt”Gradle 任务中调用 build.sbt 中定义的“hello”sbt 任务。

最佳答案

sbt-extras项目提供了一个名为 sbt 的独立脚本它可以直接用于运行 sbt 而无需先在机器上安装它。这可以通过 Gradle 项目中的“Exec”任务调用,指定要作为程序参数运行的 sbt 任务。

首先,复制sbt来自 sbt-extras/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'
}

关于gradle - 如何从 Gradle 调用 sbt 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51793555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com