在单个项目中,我有两个文件夹:project/server
和 project/web
。
project/server
是我的 Spring Boot 应用程序的根目录,其中包含 build.gradle.kts
文件,而 project/web
是使用我的 package.json
脚本对应用程序进行 react ,例如 npm start
。我想创建一个在 project/server
文件夹中运行“npm install”和“npm start”的自定义 gradle 任务,但我在编写此任务时遇到问题。
我一直在关注:https://karl.run/2018/05/07/kotlin-spring-boot-react/我被教程中说要运行的部分绊倒了:
// Task for installing frontend dependencies in web
task installDependencies(type: NpmTask) {
args = ['install']
execOverrides {
it.workingDir = '../web'
}
}
// Task for executing build:gradle in web
task buildWeb(type: NpmTask) {
args = ['run', 'build:gradle']
execOverrides {
it.workingDir = '../web'
}
}
// Before buildWeb can run, installDependencies must run
buildWeb.dependsOn installDependencies
// Before build can run, buildWeb must run
build.dependsOn buildWeb
我无法使用这些代码片段,因为 Kotlin 无法识别它们。
最佳答案
这是转换为 Kotlin DSL 的脚本:
import com.moowork.gradle.node.npm.NpmTask
// Task for installing frontend dependencies in web
val installDependencies by tasks.registering(NpmTask::class) {
setArgs(listOf("install"))
setExecOverrides(closureOf<ExecSpec> {
setWorkingDir("../web")
})
}
// Task for executing build:gradle in web
val buildWeb by tasks.registering(NpmTask::class) {
// Before buildWeb can run, installDependencies must run
dependsOn(installDependencies)
setArgs(listOf("run", "build:gradle"))
setExecOverrides(closureOf<ExecSpec> {
setWorkingDir("../web")
})
}
// Before build can run, buildWeb must run
tasks.build {
dependsOn(buildWeb)
}
关于gradle - 如何编写一个 gradle 构建任务,在与我的 gradle 构建文件不同的目录中运行诸如 "npm install"之类的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56719661/