我有一个.variables = values的.properties文件,我想根据环境/模式(DEV,QA,PROD)覆盖其中的一些
我想根据部分从文件中读取属性。想要读取任何部分中的所有默认属性,并且应根据给定的部分名称覆盖某些属性,我可以在读取属性文件时从ant脚本传递这些名称。
--- project.properties文件(可以修改)---
#default
var1=val1
url=abc.xyz
un=un_default
pwd=pwd_default
#Mode prod
[PROD]
un=un_dev
pwd=pwd_prod
[PROD.END]
#Mode dev
[DEV]
url=xyz.dev
un=un_dev
pwd=pwd_dev
[DEV.END]
#Mode qa
[QA]
un=un_qa
pwd=pwd_qa
[QA.END]
------蚂蚁-----
<property environment="env" />
<echo>Mode : ${env.MODE} </echo>
<loadproperties srcfile="project.properties">
</loadproperties>
现在如何在读取属性文件时传递$ {env.MODE},以便加载所有默认值和模式/节属性,如果默认值已经存在,则应按节中的值覆盖。
答案 0 :(得分:3)
Ant具有“首先读取就是值的方法”,因此您不能读取默认值,然后尝试覆盖;而是先阅读具体说明,然后再阅读默认设置,默认设置不会替换任何已设置的内容。有一些方法可以解决此问题,但是更容易接受一次不变的方法。
我仍然不知道要读取文件的一部分。相反,该方法通常是将每个dev / qa / prod放入单独的文件中,然后使用特定模式构造文件名并读入。
这是我刚刚从我们的一个项目中剔除的一个例子。这个想法是,可以在一系列可以设置值的地方进行设置,在这种情况下,可以根据用户名加上主机(仅是用户)或默认值进行调整:
+---+----+---+
| c1| c2| c3|
+---+----+---+
| 0| sfd|300|
| 1|asfd|400|
+---+----+---+
+---+-------+-------+------+---+
| c1| c2|c5_col3| c4| c5|
+---+-------+-------+------+---+
| 2|pljdsfn| R| USA| Us|
| 3| sad| T|London|Lon|
+---+-------+-------+------+---+