覆盖jar中的config.properties

时间:2015-06-26 18:48:31

标签: java jar properties

我有可执行jar文件,其主要类在META-INF/MANIFEST.MF中指定,其中一些属性在config.propertiesfolder/config.properties中指定。

所以我的jar文件的结构是

./my-jar-with-dependencies.jar
|- com/mypackage/Main.class
|- META_INF/MANIFEST.MF 
|- config.properties
|- folder
|    |- config.properties
|     - system.properties
|- lib
|
..

我想要实现的是将jar文件作为java -jar my-jar-with-dependencies.jar -Dconfig.properties=\path\to\new\config.properties_outside_the_jar执行并覆盖jar中的属性文件。

这可能吗?如果是这样的话?

注意:我不是控制罐子如何包装的人,所以改变罐子的包装并不是一个简单的选择

1 个答案:

答案 0 :(得分:3)

在jar文件之前,只需在类路径中放入一个包含具有相同包结构的属性文件的目录:

./my-config-directory
|- config.properties
|- folder
     |- config.properties
      - system.properties

并使用

java -cp ./my-config-directory:my-jar-with-dependencies.jar:dependency1.jar:dependency2.jar com.mypackage.Main

请注意,jar文件只是一个zip文件。所以你也可以解压缩jar文件,替换属性文件,然后重新压缩。