Вот как я это сделал с помощью скриптов Kotlin, используя как dependsOn, так и mustRunAfter. Вот пример запуска двух задач: одна (пользовательская зарегистрированная задача «importUnicodeFiles»), которая находится в «этом» проекте, и одна (заранее определенная задача «запустить»), которая находится в родственном проекте с именем «: unicode»:
tasks.register("rebuildUnicodeFiles") {
description = "Force the rebuild of the `./src/main/resources/text` data"
val make = project(":unicode").tasks["run"]
val copy = tasks["importUnicodeFiles"]
dependsOn(make)
dependsOn(copy)
copy.mustRunAfter(make)
}
Разработчики Gradle обычно не рекомендуют этот подход (они говорят, что принудительное упорядочивание - это плохо, и что выполнение задач из других проектов - плохо), и работают над способом публикации результатов между проектами; см. https://docs.gradle.org/current/userguide/cross_project_publications.html