如何設置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