Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 外部化jar文件中的属性文件_Java_Maven_Tomcat - Fatal编程技术网

Java 外部化jar文件中的属性文件

Java 外部化jar文件中的属性文件,java,maven,tomcat,Java,Maven,Tomcat,我有一个jar和application.properties文件,如下所示- BASE_ENVIRONMENT = http://localhost 这是我用来读取属性文件的实用程序类 Properties prop = new Properties(); ClassLoader loader = Thread.currentThread().getContextClassLoader(); InputStream in = loader.get

我有一个jar和application.properties文件,如下所示-

BASE_ENVIRONMENT = http://localhost
这是我用来读取属性文件的实用程序类

        Properties prop = new Properties();
        ClassLoader loader = Thread.currentThread().getContextClassLoader();
        InputStream in = loader.getResourceAsStream(fileName + ".properties");
属性文件位于

这个jar在部署在
tomcat服务器中的web应用程序中用作依赖jar

但是我需要为生产环境更改
BASE\u环境


有没有办法将此属性文件值外部化?

您可以添加一个系统参数作为配置文件:

 // 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。

可能类似于。基本上,jar中的文件定义默认值,而外部文件覆盖1个或多个默认值。