我有可执行jar文件,其主要类在META-INF/MANIFEST.MF
中指定,其中一些属性在config.properties
和folder/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中的属性文件。
这可能吗?如果是这样的话?
注意:我不是控制罐子如何包装的人,所以改变罐子的包装并不是一个简单的选择
答案 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文件,替换属性文件,然后重新压缩。