如何从ant build中的.properties文件读取部分?

时间:2019-03-26 14:42:29

标签: java build properties ant antbuilder

我有一个.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},以便加载所有默认值和模式/节属性,如果默认值已经存在,则应按节中的值覆盖。

1 个答案:

答案 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|
+---+-------+-------+------+---+