为“mvn exec:Java”设置Java属性`
Maven的为“mvn exec:Java”设置Java属性`,java,maven,Java,Maven,Maven的exec:javatarget与Maven本身在同一个JVM中运行 我希望能够将一些属性传递给java二进制文件(特别是,-ea-Djava.util.logging.config.file=logging.properties),但如何做到这一点并不明显 注意:我想向JVM传递属性,而不是向应用程序传递参数。理想情况下,我希望能够在pom.xml中指定这些,但我意识到这可能不太可能,因为Maven已经启动。作为一种解决方法,设置所有类路径等的exec:exec目标(就像我调用exe
exec:java
target与Maven本身在同一个JVM中运行
我希望能够将一些属性传递给java
二进制文件(特别是,-ea-Djava.util.logging.config.file=logging.properties
),但如何做到这一点并不明显
注意:我想向JVM传递属性,而不是向应用程序传递参数。理想情况下,我希望能够在pom.xml
中指定这些,但我意识到这可能不太可能,因为Maven已经启动。作为一种解决方法,设置所有类路径等的exec:exec
目标(就像我调用exec:java
一样)将是一个不错的选择
使用命令行:
call mvn exec:java -Dexec.classpathScope="test" -Dexec.mainClass="com.mycompany.MyFirstTest" -DPROPERTY_FILE="MyPropertyFile"
运行你的程序
有一个manager类,负责读取属性
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());
}
}
改进代码,使属性文件只加载一次。谢谢,通过
MAVEN_OPTS
设置日志记录或java:exec
配置不起作用。这可能与Java记录器使用的奇怪启动过程有关。基本上,属性必须在JVM启动后立即定义。我不知道为什么MAVEN_OPTS
在这种情况下不起作用。在JVM启动时,加载Java日志属性为时已晚。相同,但仅限于CLI解决方案:
String loggingValue = MyPropertyManager.LOGGING.getPropertyValue();
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());
}
}