外部项目的gradle run任务

时间:2018-05-21 14:09:40

标签: gradle groovy

我们说我有两个独立的项目:

./
  |
  +- projectA
  |  |
  |  + build.gradle
  |  + settings.gradle
  |  + gradlew
  |  + .gradle/
  |  + gradle/
  |  + submodulea/
  |
  +- projectB
     |
     + build.gradle
     + settings.gradle
     + gradlew
     + .gradle/
     + gradle/
     + submoduleb/

我希望从:projectB:submoduleb的构建代码执行:submoduleA的某些任务。例如:

项目B / submoduleb /的build.gradle

//...
task test() {
    println 'hello from :projectB:submoduleb'
}
//...

如何从 projectA / build.gradle 致电test

2 个答案:

答案 0 :(得分:0)

您可以使用GradleBuild类型的任务来调用外部Gradle项目。只需指定其他项目的项目目录和要执行的任务:

task myTask(type: GradleBuild) {
    dir = file('path/to/other/project')
    tasks = ['test']
}

不幸的是,这种任务类型提供的不仅仅是纯任务执行,例如无法从任务中检索反馈。

如果您的设置需要更多上述功能,您可以在项目之间添加某种耦合(多项目构建,复合构建)或编写自己的自定义解决方案。

答案 1 :(得分:-1)

您没有在Gradle中调用任务。要运行的任务及其顺序是根据用于调用Gradle的命令行自动确定的。

如果您希望子模块构建中的任务始终在子模块的构建中或在子模块的构建中使用某组任务运行,则可以使用任务依赖性。

<强> E.g。了projectA /的build.gradle

build.dependsOn ':projectB:test'

task myTask() {
    dependsOn ':projectB:myProjectBTask'
}

使用此构建脚本,调用gradle projectA:build将在projectB中运行test任务,然后在projectA中运行build任务。同样,调用gradle projectA:myTask将首先运行myProjectBTask