我如何编写运行脚本(如“0”)的gradle构建任务;npm安装“;在与我的gradle生成文件不同的目录中?
在一个项目中,我有两个文件夹,我如何编写运行脚本(如“0”)的gradle构建任务;npm安装“;在与我的gradle生成文件不同的目录中?,gradle,npm,kotlin,Gradle,Npm,Kotlin,在一个项目中,我有两个文件夹,project/server和project/web project/server是带有build.gradle.kts文件的spring boot应用程序的根,而project/web是带有package.json脚本的react应用程序,例如npm start。我想创建一个自定义gradle任务,在project/server文件夹中运行“npm install”和“npm start”,但我在编写此任务时遇到了问题 我一直在遵循:并且在教程中说要运行的部分被绊
project/server
和project/web
project/server
是带有build.gradle.kts
文件的spring boot应用程序的根,而project/web
是带有package.json
脚本的react应用程序,例如npm start
。我想创建一个自定义gradle任务,在project/server
文件夹中运行“npm install”和“npm start”,但我在编写此任务时遇到了问题
我一直在遵循:并且在教程中说要运行的部分被绊倒了:
// 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)
}
导入com.moowork.gradle.node.npm.NpmTask
//用于在web中安装前端依赖项的任务
val installDependencies by tasks.正在注册(NpmTask::class){
setArgs(listOf(“安装”))
setExecOverrides(closureOf{
setWorkingDir(“../web”)
})
}
//用于在web中执行build:gradle的任务
val buildWeb by tasks.正在注册(NpmTask::class){
//在运行buildWeb之前,必须先运行installDependencies
dependsOn(安装依赖项)
setArgs(listOf(“run”、“build:gradle”))
setExecOverrides(closureOf{
setWorkingDir(“../web”)
})
}
//buildWeb必须先运行,生成才能运行
任务.build{
dependsOn(buildWeb)
}
为了澄清,Groovy脚本工作正常,但您的问题是将Groovy转换为Kotlin,对吗?嘿@Slaw,我无法确认这些脚本是否工作,但我的主要问题是如何将其正确转换为Kotlin。谢谢你的提问!