Запустите Java-программу через Maven, предоставив в командной строке аргументы jvm и программы, а также системные свойства - PullRequest
0 голосов
/ 01 сентября 2018

Мой вопрос довольно простой, и я немного удивлен, что не мог легко найти ответ, прибегая к помощи googling или документации maven-exec-plugin.

Мне нужно выполнить мою java-программу в моем проекте maven, предоставив оба аргумента jvm, системные свойства и аргументы программы из командной строки во время вызова .
Я ожидаю, что maven предоставит classpass, а также основной класс из pom.xml, чтобы мне не приходилось писать их при вызове моей программы.

Поскольку аргументы jvm, системные свойства и аргументы программы отличаются от вызова к вызову, я не могу указать их в своем pom.xml.

Я хочу сделать что-то вроде этого:
Вызов 1:
mvn exec:whatever -Dexec.systemProperties='p1=v1' -Dexec.jvmArguments='-XX:NewRatio=1' -Dexec.args='a b c'

Вызов 2:
mvn exec:whatever -Dexec.systemProperties='p2=v2 p3=v3' -Dexec.jvmArguments='-Xmx=10g -XX:PrintGCDetails' -Dexec.args='f h g'

(«exec: what», «-Dexec.systemProperties» и т. Д. Являются просто местозаполнителями для разъяснения моего намерения и могут быть заменены любыми другими целями и аргументами).

Частичный ответ:
Я знаю, что могу использовать exec:java goal и предоставлять как программные аргументы, так и системные свойства, например:
mvn -Dp1=v1 -Dp2=v2 exec:java -exec:args="a b c"
Это прекрасно работает, так как exec:java не форкирует новый процесс, поэтому системные свойства, предоставляемые maven, также доступны моей программе. Но тогда я не знаю, как передать флаги jvm, такие как -XX: PringGCDetails, из командной строки.

Конечно, у меня всегда есть возможность создать толстую банку, а затем использовать обычную команду java для ее вызова.
Тем не менее, я хотел бы знать, есть ли способ настроить maven-exec-plugin или аналогичный, чтобы вызывать мою программу без создания толстого фляги, и все же позволить мне предоставлять системные свойства, jvm и программные аргументы во время призывание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...