Я пытаюсь передать аргумент из командной строки в класс java. Я следил за этим сообщением: http://gradle.1045684.n5.nabble.com/Gradle-application-plugin-question-td5539555.html, но код у меня не работает (возможно, он не предназначен для JavaExec?). Вот что я пробовал:
task listTests(type:JavaExec){
main = "util.TestGroupScanner"
classpath = sourceSets.util.runtimeClasspath
// this works...
args 'demo'
/*
// this does not work!
if (project.hasProperty("group")){
args group
}
*/
}
Результатом вышеупомянутого жестко закодированного значения аргументов является:
C:\ws\svn\sqe\sandbox\selenium2forbg\testgradle>g listTests
:compileUtilJava UP-TO-DATE
:processUtilResources UP-TO-DATE
:utilClasses UP-TO-DATE
:listTests
Received argument: demo
BUILD SUCCESSFUL
Total time: 13.422 secs
Однако, как только я изменяю код для использования раздела hasProperty и передаю «demo» в качестве аргумента в командной строке, я получаю исключение NullPointerException:
C:\ws\svn\sqe\sandbox\selenium2forbg\testgradle>g listTests -Pgroup=demo -s
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\ws\svn\sqe\sandbox\selenium2forbg\testgradle\build.gradle' line:25
* What went wrong:
A problem occurred evaluating root project 'testgradle'.
> java.lang.NullPointerException (no error message)
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating root project
'testgradle'.
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:54)
at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:127)
at org.gradle.configuration.BuildScriptProcessor.evaluate(BuildScriptProcessor.java:38)
На http://gradle.1045684.n5.nabble.com/file/n5709919/testgradle.zip доступен простой тестовый проект, который иллюстрирует проблему.
Это использует Gradle 1.0-rc-3. NullPointer взят из этой строки кода:
args group
Я добавил следующее задание перед определением задачи, но это не повлияло на результат:
group = hasProperty('group') ? group : 'nosuchgroup'
Любые указатели на то, как передавать аргументы командной строки в gradle, приветствуются.
Ответы:
project.group
предопределенное свойство. С помощью-P
вы можете устанавливать только те свойства проекта, которые не определены заранее. Кроме того, вы можете установить свойства системы Java (-D
).источник
Основываясь на ответе Питера Н., это пример того, как добавить (необязательно) указанные пользователем аргументы для передачи в основную часть Java для задачи JavaExec (поскольку вы не можете установить свойство 'args' вручную по причине, которую он цитирует.)
Добавьте это к задаче:
... и запустить в командной строке вот так
источник
gradle run -Purl='localhost', -Pport='8080', -Pusername='admin'
как должен выглядеть мой код в build.gradle?Моя программа с двумя аргументами, args [0] и args [1]:
мой build.gradle
моя терминальная подсказка:
источник
Начиная с Gradle 4.9 плагин приложения понимает
--args
опцию, поэтому передать аргументы так же просто, как:build.gradle
SRC / основной / Java / мой / App.java
трепать
источник
В Gradle можно использовать настраиваемые параметры командной строки, чтобы получить что-то вроде:
Однако настраиваемые параметры командной строки в Gradle - это инкубационная функция. .
Решение Java
Чтобы получить что-то подобное, следуйте инструкциям здесь :
Затем зарегистрируйте его:
Теперь вы можете:
вывод:
Котлин раствор
затем зарегистрируйте задачу с помощью:
источник
Если вам нужно проверить и установить один аргумент , ваш
build.gradle
файл будет таким:И пример команды в windows:
источник
Я написал фрагмент кода, который помещает аргументы командной строки в формат, который ожидает gradle.
моя задача выглядит так:
Чтобы передать аргументы из командной строки, выполните следующее:
источник
Вот отличный пример:
https://kb.novaordis.com/index.php/Gradle_Pass_Configuration_on_Command_Line
Какие данные вы можете передать параметры, а затем указать значение по умолчанию в переменной ext, например:
а затем ссылку в Gradle как:
И затем в любом месте вашего скрипта сборки вы можете ссылаться на него как на курс, где бы вы ни ссылались на него как
project.ext.color
Дополнительные советы здесь: https://kb.novaordis.com/index.php/Gradle_Variables_and_Properties
источник
передать URL-адрес из командной строки, сохранить свой URL-адрес в файле приложения gradle следующим образом: resValue "строка", "URL-адрес", CommonUrl
и укажите параметр в файлах gradle.properties следующим образом CommonUrl = "укажите здесь свой URL-адрес или он может быть пустым"
и передайте команду из командной строки, как показано ниже, gradle assemblyRelease -Pcommanurl = поместите здесь свой URL
источник