我需要使用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
任务替换为我在子项目中创建的任务。我不确定是否允许。
有人有什么想法来定义两个子项目之间的任务依赖性吗?
答案 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
}
}