Ваш файл свойств имеет две сущности с одинаковым значением. Задача <xmlproperty>
считывает весь XML-файл, а затем использует сущности для задания имени свойства. Если у вас есть два объекта с одним и тем же свойством, значением этого конкретного свойства будут оба вместе.
Большинство людей имеют отдельный файл свойств для каждой базы данных, а затем используют задачу <property>
с параметром file
для чтения в этом конкретном файле свойств. Таким образом, у вас должно быть два файла свойств:
database.mssql.properties
server=mssql_1
port=1433
sid_instance=foobar
path=
hostuser=sa
hostpwd=password
database.oracle.properties
server=oracle_1
port=1521
sid_instance=foobar
path=C:/oracle/oradata/foobar
hostuser=ssytem
hostpwd=password
Затем в файле build.xml
вы читаете один и только один файл свойств, основанный на базе данных:
<property name="database" value="mssql"/> <!-- Default database -->
<property name="database.file value="database.${database}.properties"/>
<fail message="No such database file "${database.file}"">
<condition>
<not>
<available file="${database.file} type="file"/>
</not>
</condition>
</fail>
<property file="${database.file}"/>
Когда кто-то запускает Ant, он может использовать параметр -D
для установки базы данных:
$ ant -Ddatabase=oracle
Это переопределит свойство database
внутри файла build.xml
и будет использовать базу данных Oracle. Если вы не укажете базу данных, она будет использовать базу данных по умолчанию (MS SQL).
И это также будет работать, если в другом файле свойств указано имя файла свойств:
<property file="build.properties"> <!-- Contains database name -->
<property name="database.file" value="database.${database}.properties"/>