Как передавать SystemProperties при вызова Exec: Java Plugin в Maven?
-
02-10-2019 - |
Вопрос
Я хочу использовать плагин Exec: Java, чтобы вызвать основной класс из командной строки. Я могу передать аргументы из командной строки, используя -Dexec.args="arg0 arg1 arg2"
, Я не знаю, как пройти свойства системы. Я попробовал '-dexec.systemproperties = "key = value" `, но без эффекта.
pom.xml
Похоже:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<mainClass>ibis.structure.Structure</mainClass>
</configuration>
</plugin>
Решение
Нет способа установить <systemProperties>
параметр в командной строке.
Однако, поскольку exec:java
не раздроблен, вы можете просто передать системное свойство Maven, и оно будет подхвачено exec:java
также.
mvn -Dkey=value exec:java -Dexec.mainClass=com.yourcompany.yourclass \
-Dexec.args="arg1 arg2 arg3"
Другие советы
Попробуйте последовать за мной, это работает правильно
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<mainClass>ibis.structure.Structure</mainClass>
<systemProperties>
<systemProperty>
<key>someKey</key>
<value>someValue</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
Я только что столкнулся с аналогичной проблемой, и я хотел написать полный ответ для других, который может столкнуться с этим вопросом.
Несмотря на то, что вопрос не о pom.xml, а о командной строке - не указывает, как делать то же самое с pom.xml, так что вот оно
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>myPackage.MyMain</mainClass>
<systemProperties>
<property>
<key>myKey</key>
<value>myValue</value>
</property>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
Для командной строки - я думаю Sean Patrick Floyd's
Ответ хорош - однако, если у вас есть что -то, что уже определено в вашем pom.xml, это переоценит это.
Так бег
mvn exec:java -DmyKey=myValue
должен также работать на вас.
Вы также должны отметить, что Документации плагина EXEC утверждает следующее
A list of system properties to be passed.
Note: as the execution is not forked, some system properties required
by the JVM cannot be passed here.
Use MAVEN_OPTS or the exec:exec instead. See the user guide for more information.
Так что вы также можете сделать что -то подобное
export MAVEN_OPTS=-DmyKey=myValue
mvn exec:java
И это должно работать так же.