首页 > 解决方案 > gradle 在外部项目上运行任务

问题描述

假设我有两个独立的项目:

./
  |
  +- 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'
}
//...

如何testprojectA/build.gradle调用?

标签: gradlegroovy

解决方案


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

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

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

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


推荐阅读