Eu tenho o seguinte problema. Eu gostaria de executar a mvn
partir da linha de comando para um Main.java
arquivo. Main.java
aceita um parâmetro. Como faço isso na linha de comando?
Tentei encontrar um exemplo, mas não tive sucesso. Alguém poderia me ajudar dando um exemplo disso?
Olhei aqui, mas não entendi muito bem o que fazer.
Além disso, como executo esse comando em uma pasta diferente da pasta Main.java?
por exemplo, o Main.java
está localizado em my/java/program/Main.java
. O que devo colocar
mvn exec:java -Dexec.mainClass="what to put here?" -Dexec.args="arg0 arg1 arg2"
Respostas:
Você pode executar:
mvn exec:exec -Dexec.args="arg1"
.Isso passará o argumento arg1 para o seu programa.
Você deve especificar a classe principal totalmente qualificada, por exemplo, um Main.java que está em um teste de pacote precisaria
Ao usar o
-f
parâmetro, conforme descrito aqui , você também pode executá-lo de outros diretórios.Para vários argumentos, simplesmente separe-os com um espaço como faria na linha de comando.
Para argumentos separados por um space, você pode agrupar usando entre
'argument separated with space'
aspas.fonte
Além de executá-lo com
mvn exec:java
, você também pode executá-lo commvn exec:exec
fonte
-Dexec.args
:mvn exec:exec -Dexec.executable="java" -Dexec.args="-Xmx4g -classpath %classpath your.package.MainClass"
Adicionar um script de shell, por exemplo,
run.sh
torna muito mais fácil:Então você é capaz de executar:
fonte
$@
armazena todos os argumentos em uma lista de strings envolta em aspas. Se você quiser usá-lo diretamente, você pode usar$*
- todos os argumentos como uma única string. Você tentou isso?