我必须在生产环境中部署一个简单的
.jar
文件。出于安全原因,我无法在 application.properties
中写入生产凭据。
我像这样检索属性:
Properties properties = new Properties();
InputStream is = PropertiesLoader.class.getResourceAsStream("/application.properties");
properties.load(is);
由于
.jar
在其根目录包含/application.properties
,因此将正确读取。我需要外包这个 application.properties
,我想知道是否有一种方法只需为 java -jar App.jar
命令添加参数即可。
我只找到了 Spring 项目的参数(here),这些参数不适合我,因为这个
.jar
是普通的 JDBC Java。
我想避免使用
FileInputStream
并将文件路径作为参数,如下所示:
Properties properties = new Properties();
String applicationPropertiesPath = args[0];
FileInputStream fis = new FileInputStream(applicationPropertiesPath);
properties.load(fis);
然后用
.jar
启动java -jar App.jar /path/to/application.properties
..但如果没有其他选择,我会的。
我采用的解决方案是使用以下命令将外部
application.properties
复制到 .jar
文件内:
jar uf App.jar /path/to/application.properties
工作完美。