У меня есть приложение Java, которое работает с настраиваемой задачей gradle, и приложение требует некоторых аргументов при вызове. Эти:
programName ( string | -f filename | -d key | -h)
Options:
string Message to be used.
-d key Use default messages, key must be s[hort], m[edium] or l[ong].
-f filename Use specified file as input.
-h Help dialog.
Задача Gradle выглядит так:
task run (type: JavaExec){
description = "Secure algorythm testing"
main = 'main.Test'
classpath = sourceSets.main.runtimeClasspath
}
Я пробовал запустить, gradle run -h
но не получается.
Ответы:
Начиная с Gradle 4.9, аргументы командной строки можно передавать с помощью --args. Например, если вы хотите запустить приложение с аргументами командной строки
foo --bar
, вы можете использоватьСм. Также Плагин приложения Gradle
Как обновить оболочку Gradle
источник
'foo --bar'
сбивает с толку, почему бы просто не использовать'foo bar'
.Gradle 4.9+
Предполагается, что у вас
build.gradle
настроен плагин Application . Выbuild.gradle
должны выглядеть примерно так:Pre-Gradle 4.9
Включите в свой
build.gradle
:Затем запустить:
gradle run -PappArgs="['arg1', 'args2']"
источник
gradle run --args 'arg1 arg2'
у меня не сработало. Пришлось сделать:gradle run --args='arg1 arg2'
Извините, что ответил так поздно.
Я нашел ответ на @xlm:
И вызывать как:
источник
Если вы хотите использовать один и тот же набор аргументов все время, вам понадобится следующее.
источник
id 'application'
плагин, и это был тот ответ, который мне был нужен (он работает).Вы можете найти решение в разделе Проблемы с передачей системных свойств и параметров при запуске класса Java через Gradle . Оба предполагают использование
args
собственностиТакже вы должны прочитать разницу между передачей с
-D
или с,-P
которая объясняется в документации Gradle.источник
Конечно, ответы, прежде всего, делают свою работу, но все же я хотел бы использовать что-то вроде
ну, это невозможно, но что, если мы сможем:
Если вы думаете, что это более элегантно, тогда вы можете это сделать, трюк состоит в том, чтобы обработать командную строку и изменить ее до того, как это сделает gradle, это можно сделать с помощью сценариев инициализации
Скрипт инициализации ниже:
Итак, в вашей задаче запуска (или JavaExec, Exec) вы можете:
Сценарий инициализации:
Ограничения:
Если вам не нравится глобальный скрипт инициализации, вы можете указать его в командной строке
Или лучше добавить псевдоним в свою оболочку:
источник
argsI.remove()
этоИх нужно передать как
args
задаче, используя свойства проекта, например:добавлен в определение вашей задачи (см. dsl docs )
Затем вы можете запустить его как:
источник