Как я могу написать задачу сборки gradle, которая запускает скрипт, такой как «npm install», в другом каталоге, чем мой файл сборки gradle? - PullRequest
1 голос
/ 23 июня 2019

В одном проекте у меня есть две папки: project/server и project/web.

project/server - это корень моего весеннего загрузочного приложения с моим файлом build.gradle.kts, тогда как project/web - этоприложение реагирования с моими package.json скриптами, такими как npm start.Я хотел бы создать пользовательскую задачу gradle, которая запускает «npm install» и «npm start» в папке project/server, но у меня возникают проблемы при написании этой задачи.

Я выполняю следующие действия: 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.

1 Ответ

1 голос
/ 23 июня 2019

Это скрипт, конвертированный в 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...