Как передать systemProperties при вызове exec: java plugin в maven?
Я хочу использовать плагин 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>
Ответы
Ответ 1
Невозможно установить параметр <systemProperties>
в командной строке.
Однако, поскольку exec:java
не разветвляется, вы можете просто передать системное свойство maven, и оно также будет подхвачено exec:java
.
mvn -Dkey=value exec:java -Dexec.mainClass=com.yourcompany.yourclass \
-Dexec.args="arg1 arg2 arg3"
Ответ 2
Попробуйте следовать за мной, он работает правильно
<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>
Ответ 3
Я столкнулся с подобной проблемой, и я хотел написать полный ответ для других, которые могут столкнуться с этим вопросом.
Даже если вопрос не о 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
и он должен работать одинаково.