Eu tenho um aplicativo Java que é executado com uma tarefa de classificação personalizada e o aplicativo requer alguns argumentos ao ser chamado. Esses são:
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.
A tarefa Gradle se parece com:
task run (type: JavaExec){
description = "Secure algorythm testing"
main = 'main.Test'
classpath = sourceSets.main.runtimeClasspath
}
Eu tentei correr gradle run -h
e não funciona.
Respostas:
Desde o Gradle 4.9, os argumentos da linha de comando podem ser passados com --args. Por exemplo, se você deseja iniciar o aplicativo com argumentos de linha de comando
foo --bar
, pode usarVeja também Gradle Application Plugin
Como atualizar o invólucro Gradle
fonte
'foo --bar'
é confuso, por que não usar'foo bar'
?Gradle 4.9+
Isso pressupõe que você
build.gradle
esteja configurado com o plug-in de aplicativo . Vocêbuild.gradle
deve se parecer com isso:Pré-graduação 4.9
Inclua o seguinte no seu
build.gradle
:Então, para executar:
gradle run -PappArgs="['arg1', 'args2']"
fonte
gradle run --args 'arg1 arg2'
não funcionou para mim. Eu tive que fazer:gradle run --args='arg1 arg2'
Desculpe por responder tão tarde.
Imaginei uma resposta parecida com a do @xlm:
E invoque como:
fonte
Se você deseja usar o mesmo conjunto de argumentos o tempo todo, basta fazer o seguinte.
fonte
id 'application'
plugin e esta foi a resposta que eu precisava (funciona).Você pode encontrar a solução em Problemas ao passar propriedades e parâmetros do sistema ao executar a classe Java via Gradle . Ambos envolvem o uso do
args
propriedadeVocê também deve ler a diferença entre passar com
-D
ou com-P
isso é explicada na documentação do Gradlefonte
Claro que as respostas acima de tudo fazem o trabalho, mas ainda assim eu gostaria de usar algo como
bem, isso não pode ser feito, mas e se pudermos:
Se você acha que é mais elegante, pode fazê-lo, o truque é processar a linha de comando e modificá-la antes do gradle, isso pode ser feito usando scripts init
O script init abaixo:
Portanto, na sua tarefa de execução (ou JavaExec, Exec), você pode:
O script init é:
Limitações:
Se você não gosta do script init global, pode especificá-lo na linha de comando
Ou melhor, adicione um alias ao seu shell:
fonte
argsI.remove()
que o efeito tenha o efeito desejado). Sugestões?Você precisa passá-los
args
para a tarefa usando propriedades do projeto, algo como:adicionado à sua definição de tarefa (consulte os documentos dsl )
Então você pode executá-lo como:
fonte