Mam aplikację Java, która działa z niestandardowym zadaniem gradle i aplikacja wymaga pewnych argumentów po wywołaniu. To są:
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.
Zadanie Gradle wygląda następująco:
task run (type: JavaExec){
description = "Secure algorythm testing"
main = 'main.Test'
classpath = sourceSets.main.runtimeClasspath
}
Próbowałem biegać gradle run -h
i to nie działa.
Odpowiedzi:
Od wersji Gradle 4.9 argumenty wiersza poleceń można przekazywać za pomocą --args. Na przykład, jeśli chcesz uruchomić aplikację z argumentami wiersza poleceń
foo --bar
, możesz użyćZobacz także Wtyczka aplikacji Gradle
Jak zaktualizować opakowanie Gradle
źródło
'foo --bar'
jest mylące, dlaczego po prostu nie użyć'foo bar'
.Gradle 4.9+
Zakłada się, że masz
build.gradle
skonfigurowaną wtyczkę Application . Twójbuild.gradle
powinien wyglądać podobnie do tego:Pre-Gradle 4.9
Uwzględnij w swoim
build.gradle
:Następnie do uruchomienia:
gradle run -PappArgs="['arg1', 'args2']"
źródło
gradle run --args 'arg1 arg2'
nie działa dla mnie. Musiałem zrobić:gradle run --args='arg1 arg2'
Przepraszam za tak późną odpowiedź.
Znalazłem podobną odpowiedź na @xlm:
I wywołaj jak:
źródło
Jeśli chcesz używać tego samego zestawu argumentów przez cały czas, wystarczy poniższe.
źródło
id 'application'
wtyczki i to była odpowiedź, której potrzebowałem (działa).Rozwiązanie można znaleźć w artykule Problemy z przekazywaniem właściwości i parametrów systemowych podczas uruchamiania klasy Java za pośrednictwem Gradle . Oba wymagają użycia rozszerzenia
args
nieruchomościPowinieneś także przeczytać różnicę między zaliczaniem z
-D
lub z-P
tym, co jest wyjaśnione w dokumentacji Gradleźródło
Oczywiście odpowiedzi przede wszystkim działają, ale nadal chciałbym użyć czegoś takiego
cóż, nie da się tego zrobić, ale co, jeśli możemy:
Jeśli uważasz, że jest bardziej elegancki, możesz to zrobić, sztuka polega na przetworzeniu wiersza poleceń i zmodyfikowaniu go przed wykonaniem gradle, można to zrobić za pomocą skryptów inicjujących
Poniższy skrypt startowy:
Więc w zadaniu uruchamiania (lub JavaExec, Exec) możesz:
Skrypt startowy to:
Ograniczenia:
Jeśli nie lubisz globalnego skryptu init, możesz go określić w linii poleceń
Lub lepiej dodaj alias do swojej powłoki:
źródło
argsI.remove()
daje to pożądany efekt). Sugestie?Musisz je przekazać jako
args
zadanie za pomocą właściwości projektu, na przykład:dodane do definicji zadania (zobacz dokumentację dsl )
Następnie możesz uruchomić go jako:
źródło