задание Gradle Run на внешнем проекте - PullRequest
0 голосов
/ 21 мая 2018

Допустим, у меня есть два независимых проекта:

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

Я бы хотел выполнить определенные задачи для :projectB:submoduleb из сценария сборки :submoduleA.Например:

projectB / submoduleb / build.gradle :

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

Как мне позвонить test из projectA / build.gradle ?

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Вы можете использовать задачу типа GradleBuild для вызова внешнего проекта Gradle.Просто укажите каталог проекта другого проекта и задачи, которые вы хотите выполнить:

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

К сожалению, этот тип задачи не обеспечивает больше, чем просто выполнение задачи, например, невозможно получить обратную связь отзадача.

Если для вашей установки требуются какие-либо дополнительные функции, подобные описанным выше, вы можете добавить какую-либо связь между проектами (многопроектная сборка, составная сборка) или написать собственное решение.

0 голосов
/ 21 мая 2018

Вы не вызываете задачи в Gradle.задачи для запуска и их порядок определяются автоматически на основе командной строки, используемой для вызова Gradle.

Если вы хотите, чтобы задача в сборке подмодулей всегда выполнялась до или с определенным набором задач в сборке подмодуля.Вы можете использовать зависимости задачи.

Например, projectA / build.gradle

build.dependsOn ':projectB:test'

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

С помощью этого сценария сборки вызов gradle projectA:build запустит задачу testв проекте B, то задача build в проекте A.Аналогично, вызов gradle projectA:myTask сначала будет выполняться myProjectBTask.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...