execute
- это метод класса Task
.Вы пытаетесь обойти систему сборки Gradle.Выполнение задач - это непростое дело или создание экземпляра и вызов execute
.Gradle обрабатывает внедрение зависимостей, кэширование, обработку ввода и вывода, все виды вещей.Поэтому используйте Gradle.
1)
Создайте одну задачу жизненного цикла , которая является родительской задачей для всего, что вы хотите выполнить.
final def verifyProject = tasks.register("verifyProject")
Жизненный циклзадача - это задача, которая не выполняет никакой работы, она зависит только от других задач.
2)
Вы можете ссылаться только на уже созданные задачи.Например, вы не можете ссылаться на задачу lint варианта отладки, пока не создан вариант отладки.
Обработайте каждый вариант при его создании, найдите все задачи, которые вы хотите выполнить, и подключите их к основной задаче.
android.applicationVariants.all {
final def cappedVariantName = name.capitalize()
// For every build variant that has build type "debug"...
if (variant.buildType == "debug") {
verifyProject.configure {
dependsOn("lint$cappedVariantName")
dependsOn("ktlint$cappedVariantName")
dependsOn("test${cappedVariantName}UnitTest")
}
}
}
Пожалуйста, проверьте имена задач, которые вы хотите выполнить.
Теперь, когда вы запустите gradlew verifyProject
, все задачи, от которых зависит эта задача, будут выполнены.Вы отвечаете за зависимости.
Если вы хотите использовать это в модуле библиотеки Android, замените android.applicationVariants
на android.libraryVariants
.
Код следует Избегание конфигурации задачи.Это означает, что заданные вами задачи не будут настроены, если вы специально не вызовете их.Это должно сэкономить ресурсы (ЦП и память) при запуске сборки.
3)
Чтобы сделать это автоматически для всех модулей, выберите один или оба из следующих параметров и поместите их на * 1037.* корневой проект build.gradle
.
subprojects { project ->
project.plugins.whenPluginAdded { plugin ->
// For all libraries and only libraries:
if (plugin instanceof com.android.build.gradle.LibraryPlugin) {
project.android.libraryVariants.all { variant ->
// See above.
}
}
// For all apps and only apps:
if (plugin instanceof com.android.build.gradle.AppPlugin) {
project.android.applicationVariants.all { variant ->
// See above.
}
}
}
}