如何编写gradle构建任务,以在与gradle构建文件不同的目录中运行“ npm install”之类的脚本?

时间:2019-06-22 22:34:07

标签: gradle npm kotlin

在一个项目中,我有两个文件夹project/serverproject/web

project/server是带有build.gradle.kts文件的spring boot应用程序的根目录,而project/web是具有package.json脚本(例如{{1})的React应用程序的根目录}。我想在npm start文件夹中创建一个自定义gradle任务,以运行“ npm install”和“ npm start”,但是在编写此任务时遇到了麻烦。

我一直在关注https://karl.run/2018/05/07/kotlin-spring-boot-react/,并且在该教程的要运行的部分被绊倒了:

project/server

我无法使用这些代码段,因为Kotlin无法识别这些代码段。

1 个答案:

答案 0 :(得分:1)

这是转换为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)
}