Maven的exec:java
目标在与Maven本身相同的JVM中运行。
我希望能够将一些属性传递给java
二进制文件(特别是-ea -Djava.util.logging.config.file=logging.properties
),但是如何做到这一点并不明显。
注意:我想将属性传递给JVM,而不是应用程序的参数。理想情况下,我希望能够在pom.xml
中指定这些,但我意识到由于Maven的启动可能不太可能。作为一种变通方法,设置所有类路径等的exec:exec
目标就像我调用exec:java
一样好。
答案 0 :(得分:4)
来自usage page:
<configuration>
<mainClass>com.example.Main</mainClass>
<arguments>
<argument>argument1</argument>
...
</arguments>
<systemProperties>
<systemProperty>
<key>java.util.logging.config.file</key>
<value>logging.properties</value>
</systemProperty>
...
</systemProperties>
</configuration>
必须在env变量MAVEN_OPTS
中设置其他JVM选项MAVEN_OPTS=-ea
答案 1 :(得分:0)
使用命令行:
call mvn exec:java -Dexec.classpathScope="test" -Dexec.mainClass="com.mycompany.MyFirstTest" -DPROPERTY_FILE="MyPropertyFile"
运行你的程序。
有一个经理班,负责阅读这些房产。
String loggingValue = MyPropertyManager.LOGGING.getPropertyValue();
然后,编写MyPropertyManager类以从属性文件加载属性。
public enum MyPropertyManager {
LOGGING, OTHERPROPERTY, OTHER;
public String getPropertyValue() {
String propertyFile = System.getProperty("PROPERTY_FILE");
// ... load property file
Properties loadedProperties = .....
return properties.get(LOGGING.toString());
}
}
改进代码,以便只加载一次属性文件。