4

Maven 的exec:java目标运行在与 Maven 本身相同的 JVM 中。

我希望能够将一些属性传递给java二进制文件(特别是,-ea -Djava.util.logging.config.file=logging.properties),但如何做到这一点并不明显。

注意:我想将属性传递给 JVM,而不是传递给应用程序的参数。理想情况下,我希望能够在 中指定这些pom.xml,但我意识到由于 Maven 的启动,这可能不太可能。作为一种解决方法,exec:exec设置所有类路径等的目标就像我调用的exec:java那样会很好。

4

2 回答 2

5

使用页面

    <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>

必须在环境变量 MAVEN_OPTS 中设置额外的 JVM 选项

MAVEN_OPTS=-ea 
于 2013-01-11T00:35:57.267 回答
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());
    }
}

改进代码,使属性文件只加载一次。

于 2013-09-27T19:05:10.527 回答