外部化一个jar文件中的属性文件

时间:2018-06-14 13:03:25

标签: java maven tomcat

我有app.properties文件的jar,如下所示 -

BASE_ENVIRONMENT = http://localhost

这是我的实用程序类来读取属性文件

        Properties prop = new Properties();
        ClassLoader loader = Thread.currentThread().getContextClassLoader();
        InputStream in = loader.getResourceAsStream(fileName + ".properties");

属性文件位于<default package>

此jar用作我的Web应用程序中的依赖jar,它部署在tomcat server

但我需要更改生产环境的BASE_ENVIRONMENT

有没有办法可以外化此属性文件值?

1 个答案:

答案 0 :(得分:1)

您可以添加系统参数作为个人资料:

 // default to DEV
 String profile = "dev"
 if (System.getProperty("ENV") != null) {
    profile = System.getProperty("ENV");
 }
 Properties prop = new Properties();
 ClassLoader loader = Thread.currentThread().getContextClassLoader();
 InputStream in = loader.getResourceAsStream(fileName + "_" + profile + ".properties");

然后你会用

启动你的应用程序
   .... -DENV=prod

,类似config_prod.properties的文件可以在类路径中找到,默认为config_dev.properties。