如何设置JVM以自动将.properties文件加载到JVM启动时类路径上的.jar文件中?我不想在命令行(使用-D)配置属性,但将它们放在.properties文件中。在JVM启动时从.jar中设置.properties文件的属性
有没有一种方法可以在Maven的帮助下进行配置?
如何设置JVM以自动将.properties文件加载到JVM启动时类路径上的.jar文件中?我不想在命令行(使用-D)配置属性,但将它们放在.properties文件中。在JVM启动时从.jar中设置.properties文件的属性
有没有一种方法可以在Maven的帮助下进行配置?
不,不可能自动从文件加载系统属性。你可以做的是有某种启动器读取文件并自动将其“转换”为-D命令行选项。
的Java Webstart的做类似的东西,随着JNLP file定义系统属性 - 也许你可以使用它。
如果您正在使用Maven来打包应用程序,请考虑使用appassembler - Maven的插件的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>
这是一个独立的应用程序的一个很好的解决方案,但在我的情况下,我有一个库。我想以某种方式将属性与这个lib捆绑在一起,每次使用它时都会设置捆绑的属性。所以基本上我必须在源代码中完成它。 – desolat 2009-09-25 10:19:38
今天我学到了一些新东西。感谢您的回应。 – 2016-08-17 15:56:16