Ответ 1
Не совсем уверен, какой из них вам нужен, но они должны покрывать ваши базы.
1. Вызов задач напрямую
Вы можете просто позвонить
gradle :other/projC:hello :other/projD:hello
Я тестировал это с помощью:
# Root/build.gradle
allprojects {
task hello << { task -> println "$task.project.name" }
}
и
# Root/settings.gradle
include 'projA'
include 'projB'
include 'other/projC'
include 'other/projD'
2. Только создание задач в подпроектах
Или вам нужна только задача, созданная на других проектах /*?
Если последнее, то работает следующее:
# Root/build.gradle
allprojects {
if (project.name.startsWith("other/")) {
task hello << { task -> println "$task.project.name" }
}
}
и его можно вызвать с помощью:
$ gradle hello
:other/projC:hello
other/projC
:other/projD:hello
other/projD
3. Создание задачи, выполняющей задачи только в подпроектах
Эта версия соответствует моему чтению вашего вопроса, означающего, что уже есть задача в подпроектах (buildJar), и создание задачи в корне, которая будет вызывать только подпроекты other/*: buildJar
allprojects {
task buildJar << { task -> println "$task.project.name" }
if (project.name.startsWith("other/")) {
task runBuildJar(dependsOn: buildJar) {}
}
}
Это создает задачу "buildJar" для каждого проекта и "runBuildJar" только для других проектов /*, поэтому вы можете вызвать:
$ gradle runBuildJar
:other/projC:buildJar
other/projC
:other/projC:runBuildJar
:other/projD:buildJar
other/projD
:other/projD:runBuildJar
Ваш вопрос может быть прочитан многими способами, надеюсь, что это покрывает их все:)