Как зависеть от всех задач *compile и *testCompile в Gradle
Мне бы хотелось, чтобы в плагине animalSniffer одна задача зависела от компиляции всех производственных классов (Java, Groovy, Scala) во всех исходных наборах, а вторая - от компиляции всех тестовых классов во всех исходных наборах (возможно, отдельных). test
а также integrationTest
).
Я не хотел бы зависеть от *classes
задачи как *classes
задачи должны зависеть animalSniffer
задач (который обнаруживает несовместимости API версии Java после компиляции и может остановить сборку).
Есть ли лучший способ достичь этого в Gradle, чем проверка того, AbstractCompile
Имя задачи начинается с "compileTest"?
2 ответа
Ты можешь использовать tasks.withType(AbstractCompile)
которая возвращает все задачи компиляции для всех исходных наборов (включая Java, Groovy, Scala). Затем вы можете отфильтровать это, удалив все задачи, которые имеют test
в них, как предложено в другом ответе.
Чтобы конкретная задача зависела от всего этого, вы можете сделать следующее:
myTask.dependsOn tasks.withType(AbstractCompile).matching {
!it.name.toLowerCase().contains("test")
}
Если вам необходимо провести различие между производственными и тестовыми задачами компиляции / исходными наборами, проверьте, содержит ли имя test
(без учета регистра) - лучшее решение, которое доступно.