Простой ответ: вы не можете. Только зависимости задач express что нужно сделать заранее, не как это нужно сделать.
Позвольте мне показать вам простой пример, почему что-то подобное невозможно в системе задач Gradle:
Во-первых, нам нужно знать, что в Gradle каждая задача будет выполняется только один раз за один вызов (часто называемый сборкой). Теперь представьте задачу, которую нужно запустить перед двумя задачами, не связанными друг с другом. Хорошим примером из реальной жизни является задача compileJava
из Java плагина , от которого зависят как задача test
, так и задача jar
. Если dependsOn
будет поддерживать параметры, может случиться так, что две задачи будут зависеть от одной задачи с разными параметрами. Какие параметры следует использовать в этом случае?
В качестве решения вы можете настроить другую задачу прямо в вашем плагине. Если вы хотите передать параметр, только если ваша настраиваемая задача запущена, вам может потребоваться добавить другую задачу, которая запускается как установка и применяет требуемую конфигурацию к фактической задаче:
task setup {
doFirst {
// apply configuration
}
}
taskX.mustRunAfter setup
task custom {
dependsOn setup
dependsOn taskX
}
В этом примере используется Groovy, но должно быть возможно преобразовать его в Kotlin и использовать в своем плагине.
Редактировать относительно фактического параметра
Если честно , Я не очень хорошо знаком с плагином Android Gradle, но если я получу эту документацию правильно, свойство проекта android.testInstrumentationRunnerArguments.annotation
будет просто альтернативой использованию следующего кода в скрипте сборки:
android {
defaultConfig {
testInstrumentationRunnerArgument 'annotation', '<some-value>'
}
}
Вы можете попробовать определить следующую задачу, а затем запустить ее, используя ./gradlew customTest
task customTest {
doFirst {
android.defaultConfig.testInstrumentationRunnerArgument 'annotation', '<some-value>'
}
finalizedBy 'connectedAndroidTest'
}