如何设置JVM以在JVM启动时的类路径中自动加载.jar中的.properties文件?我不想在命令行上配置属性(使用-D),但将它们放在.properties文件中。
有没有办法在Maven的帮助下配置它?
答案 0 :(得分:6)
不,不可能自动从文件加载系统属性。您可以做的是使用某种启动器来读取文件并自动将其“转换”为-D命令行选项。
Java WebStart做了类似的事情,在JNLP file中定义了系统属性 - 也许你可以使用它。
答案 1 :(得分:3)
如果您使用Maven打包应用程序,请考虑使用appassembler-maven-plugin的generate-daemons目标。这将为Windows和Linux生成基于JSW的守护进程包装器。因此,用于启动应用程序的bat / sh文件将定义这些属性,同时仍允许您通过命令行指定其他属性。
您可以在执行中指定defaultJVMSettings属性,以便使用这些属性启动JVM。以下示例显示了如何定义这些设置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.0</version>
<execution>
<id>generate-jsw-scripts</id>
<phase>package</phase>
<goals>
<goal>generate-daemons</goal>
</goals>
<configuration>
<defaultJvmSettings>
<initialMemorySize>256M</initialMemorySize>
<maxMemorySize>1024M</maxMemorySize>
<systemProperties>
<systemProperty>java.security.policy=conf/policy.all</systemProperty>
<systemProperty>com.sun.management.jmxremote</systemProperty>
<systemProperty>com.sun.management.jmxremote.port=8999</systemProperty>
<systemProperty>
com.sun.management.jmxremote.authenticate=false
</systemProperty>
<systemProperty>com.sun.management.jmxremote.ssl=false</systemProperty>
</systemProperties>
<extraArguments>
<extraArgument>-server</extraArgument>
</extraArguments>
</defaultJvmSettings>
<daemons>
<daemon>
<id>myApp</id>
<mainClass>name.seller.rich.MainClass</mainClass>
<commandLineArguments>
<commandLineArgument>start</commandLineArgument>
</commandLineArguments>
<platforms>
<platform>windows</platform>
<platform>unix</platform>
</platforms>
</daemon>
</daemons>
<target>${project.build.directory}/appassembler</target>
</configuration>
</execution>
</plugin>