#android #kotlin #gradle-kotlin-dsl
#Android #kotlin #gradle-kotlin-dsl
Вопрос:
Исходная проблема: https://github.com/gradle/gradle/issues/14253
В настоящее время (как указано в выпуске github) я не могу получить пользовательское свойство через делегированное свойство ( by property
)
Рассмотрим этот начальный фрагмент кода:
// app/build.gradle.kts
val foo: String? by project
val outputEnvirontmentVariable by tasks.registering(Task::class) {
println("my foo: $foo")
}
Ожидаемое поведение
В разделе Текущее поведение также должно быть print bar
при настройке переменной среды
Текущее поведение
При выполнении этой задачи:
(root-directory)$: gradle outputEnvirontmentVariable
Ниже приведены результаты для обоих подходов (системное свойство или переменная среды):
Настройка свойства проекта с помощью переменной среды: ORG_GRADLE_PROJECT_foo=bar
// env variable inside bash/zsh profile file
ORG_GRADLE_PROJECT_foo=bar
Результат:
my foo: null
Настройка свойства проекта с помощью системного свойства: org.gradle.project.foo=bar
Результат:
my foo: bar
Контекст
Либо я что-то упустил, либо моя реализация неверна, пожалуйста, cmiiw ~
Ответ №1:
Я закрываю проблему на github из-за неправильной реализации. Смотрите ниже правильные способы вызова org.gradle.project
или ORG_GRADLE_PROJECT
обработки как свойства проекта:
system property
Подход должен иметь префиксsystemProp.
передorg.gradle.project.<your-key>
// gradle.properties
systemProp.org.gradle.project.foo="<your-value>"
- Или для
environment variable
подхода, который я забыл использоватьexport
, без него ключ-значение не обрабатывается как правильная переменная среды
// bash/zsh profile
export ORG_GRADLE_PROJECT_foo="<your-value>"
Просто вызовите val foo: String? by project
для nullable или val foo: String by project
для ненулевого значения в вашем build.gradle.kts