Как зависеть от всех задач *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 (без учета регистра) - лучшее решение, которое доступно.

Другие вопросы по тегам