无法使用Gradle定义多个项目之间的任务依赖关系

时间:2018-10-17 01:59:26

标签: gradle

我需要使用Gradle构建2个项目。 我有每个项目的2 gradle文件和父gradle文件。 在settings.gradle中,我定义了项目:

include 'loadRemote'
include 'load'
rootProject.name = 'EquipLoad'

project(':loadRemote').buildFileName = 'buildRemote.gradle'
project(':load').buildFileName = 'buildLoad.gradle'

每个子项目都有自己定义的编译和阶段任务。 我需要首先运行loadRemote项目,然后再运行load项目。 如何创建此依赖关系? 我尝试像这样将依赖项添加到build.gradle文件中:

tasks.getByPath(":load:cleanCompileStage").dependsOn(":loadRemote:cleanCompileStage")

但是加载项目首先编译。

我发现了以下语法:

project(':load') {
    dependencies {
       compile project (':remoteLoad')
    }
}

但是需要将Gradle compile任务替换为我在子项目中创建的任务。我不确定是否允许。

有人有什么想法来定义两个子项目之间的任务依赖性吗?

2 个答案:

答案 0 :(得分:0)

您可以这样修改脚本:

project(':load') {
   war.dependsOn project(":loadRemote").tasks.compileJava
}

答案 1 :(得分:0)

以上答案对我不起作用。我确定它是我的项目所独有的。我必须使用1个代码库创建2个耳文件。

我所做的是创建一个父gradle文件build.gradle,并在其中添加了使用两个项目的任务,如下所示:

//This task builds load and loadRemote ear using 1 command, buildAll
gradle.projectsEvaluated {
    task compileAll (dependsOn: [project(':loadRemote').remoteLoadCleanCompileStage]) {
         compileAll.finalizedBy project(':load').loadCleanCompileStage
    }

    task packageAll (dependsOn: [project(':loadRemote').remoteLoadPackage]) {
        packageAll.finalizedBy project(':load').loadPackage
    }

    task buildAll (dependsOn: [compileAll]) {
        buildAll.finalizedBy packageAll
    }
}