我想找到一种在不同部署配置的多个.properties
文件之间切换的权宜之计。
我最初的兴趣是创建一个单独的文件selector.properties
,其单个属性用于确定正确的文件:
properties.file=deploymentConfiguration1.properties
...进行一次部署,或者:
properties.file=deploymentConfiguration2.properties
...用于下一次部署。
我团队中的另一位开发人员有一个ApplicationProperties
类,其中:
private static final String PROP_FILE="someFileName.properties";
......是这样做的手段。但是,我想切换属性文件而不用重建!提前感谢您的意见。
编辑:也许我最初应该更清楚,但这是针对一组打包为AAR的Web服务。我将把它放到Web服务器上,让Tomcat和Axis2做他们的事情。
所以,我不认为命令行参数的一些答案在这种情况下会起作用。
答案 0 :(得分:6)
拥有多个属性文件,每个env一个,例如;
application-dev.properties
application-test.properties
application-prod.properties
使用env作为系统属性启动您的应用程序;
java -Denv=test
从相关文件加载您的属性;
String props = "application-" + System.getProperty("env") + ".properties";
请注意,我通常不鼓励使用具有固定名称的属性文件,其中文件是在 build 时生成的。
修改强>
如果它是Web应用程序,您可以在部署描述符(web.xml)中设置env的值
<env-entry>
<env-entry-name>myEnv</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>test</env-entry-value>
</env-entry>
然后你可以像这样在你的网络应用中获得价值;
Context ctx = new InitialContext();
Context envCtx = (Context) ctx.lookup("java:comp/env");
String env = (String)envCtx.lookup("myEnv");
String props = "application-" + env + ".properties";
答案 1 :(得分:2)
添加一个指出配置文件的参数!
java Program -config deploymentConfiguration2.properties
答案 2 :(得分:0)
使用“属性管理器”属性文件的方法听起来不错。 主属性文件可以通过jvm参数作为参数传递给vm 但是这个过程的一个缺点是主属性文件在一段时间内变得不受管理。例如,您最终可能会保留一些不再有意义的旧属性文件引用。