У меня следующая проблема. Я хочу запустить файл mvn
из командной строки Main.java
. Main.java
принимает параметр. Как мне это сделать из командной строки?
Я попытался найти пример, но мне это не удалось. Может ли кто-нибудь помочь мне, приведя мне пример этого?
Я посмотрел сюда, но не совсем понял, что мне делать.
Кроме того, как мне выполнить эту команду из папки, отличной от папки Main.java?
например, Main.java
находится в my/java/program/Main.java
. Что я должен положить
mvn exec:java -Dexec.mainClass="what to put here?" -Dexec.args="arg0 arg1 arg2"
Ответы:
Вы можете запустить:
mvn exec:exec -Dexec.args="arg1"
.Это передаст аргумент arg1 вашей программе.
Вы должны указать полный класс основного, например, Main.java, который находится в тесте пакета, потребует
mvn exec:java -Dexec.mainClass=test.Main
Используя
-f
параметр, описанный здесь , вы также можете запускать его из других каталогов.mvn exec:java -Dexec.mainClass=test.Main -f folder/pom.xm
Для нескольких аргументов просто разделите их пробелом, как в командной строке.
mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="arg1 arg2 arg3"
Аргументы, разделенные знаком space, можно сгруппировать, используя
'argument separated with space'
кавычки.mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="'argument separated with space' 'another one'"
источник
Помимо запуска с помощью
mvn exec:java
, вы также можете запустить его с помощьюmvn exec:exec
mvn exec:exec -Dexec.executable="java" -Dexec.args="-classpath %classpath your.package.MainClass"
источник
-Dexec.args
mvn exec:exec -Dexec.executable="java" -Dexec.args="-Xmx4g -classpath %classpath your.package.MainClass"
Например, добавление сценария оболочки
run.sh
делает его намного проще:#!/usr/bin/env bash export JAVA_PROGRAM_ARGS=`echo "$@"` mvn exec:java -Dexec.mainClass="test.Main" -Dexec.args="$JAVA_PROGRAM_ARGS"
Тогда вы можете выполнить:
источник
$@
сохраняет все аргументы в списке строк, заключенных в кавычки. Если вы хотите использовать его напрямую, вы можете использовать$*
- все аргументы как одну строку. Вы пробовали это?