Gradle:' dependsOn'在其他子项目中执行任务

时间:2017-05-18 19:15:08

标签: gradle dependencies war

我有一个分层的gradle 3.1项目,看起来像这样:

root
    - build.gradle
    - settings.gradle
    - server (Java + WAR plugin)
        - build.gradle
    - client (Node plugin)
        - build.gradle

settings.gradle因此如下所示:

include ':server', ':client'

我现在要做的是将:client:build任务的输出捆绑在*.war任务生成的:server:war文件中。为此,我需要从:server:war:client:build的依赖关系,以确保:client:build的输出文件始终存在,当我需要在:server:war中复制它们时任务。

问题是:这是如何运作的?

我想在这里实现的目标:每当执行:server:war时,:client:build首先执行

到目前为止我尝试过的事情(没有一个有效):

// in server/build.gradle
task war {
    dependsOn ':client:build'
}

我也尝试过:

// in server/build.gradle
war.dependsOn = ':client:build'

......还有:

// in server/build.gradle
task war(dependsOn: ':client:build') {

}

上述尝试均无效。知道我做错了吗?

1 个答案:

答案 0 :(得分:8)

请尝试:

war.dependsOn ':client:build'

task war {
    dependsOn ':client:build'
}

定义了一个名为war

的新任务

war.dependsOn = ':client:build'

理论上调用this方法,但参数类型错误

task war(dependsOn: ':client:build') {
}

这里你也定义了一个新任务。