Что вы имеете в виду " Возвращает значение по умолчанию и не учитывает аргумент командной строки "? Следующее работает, как я ожидал:
def props = project.properties.findAll { k, v -> k.startsWith("test_") }
.collectEntries { k, v -> [k - "test_", v] }
tasks.register("test") {
doLast {
props.each { println it }
}
}
Тогда вы можете получить ожидаемый результат:
➜ gradle test -Ptest_foo=yay -Ptest_bar=baz
> Task :test
foo=yay
bar=baz
Где проблема, которую вы видите? Предполагается, что они должны быть переданы чему-то еще, пропущенному в вопросе?
Обновление
Хорошо, поэтому, учитывая этот тестовый класс в src/main/java/test
:
package test;
public class Main {
public static void main(String... args) {
System.out.println(System.getProperty("tim", "nope"));
}
}
Какие распечатки значение системного свойства "tim", если оно существует (или "nope", если оно отсутствует)
Затем мы можем использовать этот сценарий сборки:
plugins {
id "java"
id "application"
}
def props = project.properties.findAll { k, v -> k.startsWith("test_") }
.collectEntries { k, v -> [k - "test_", v] }
mainClassName = "test.Main"
tasks.withType(JavaExec).named("run").configure { t ->
props.each { k, v ->
t.systemProperty k, v
}
}
Для настройки по умолчанию run
задача, которую создает плагин application
Затем, когда мы go не обладаем свойством, мы получаем:
➜ gradle run
> Task :run
nope
BUILD SUCCESSFUL in 630ms
И когда мы устанавливаем свойство, оно видится классом:
➜ gradle run -Ptest_tim=yay
> Task :run
yay
BUILD SUCCESSFUL in 552ms
Надеюсь, это поможет: -)