Я хочу выполнить все файлы sql, которые сопротивляются в данном каталоге. Вызов, который я хочу сделать, выглядит примерно так:
mysql --host=dbbackend --user=stack --password=overflow dbname -e 'source file1.sql'
Это можно выразить как:
<apply executable="mysql" dir="." failonerror="true">
<arg value="--host=dbbackend"></arg>
<arg value="--user=stack"></arg>
<arg value="--password=overflow"></arg>
<arg value="mydbname"></arg>
<arg value="--e source dummy.sql"></arg>
<fileset dir="${db.dump.location.data}" casesensitive="no" description="take all sql files">
<patternset>
<include name="**/*.sql" />
</patternset>
</fileset>
</apply>
Если у меня есть 3 файла sql в этом каталоге, то dummy.sql вызывается 3 раза. Все идет нормально. Есть ли заполнитель для изменения этой строки:
<arg value="--e source dummy.sql"></arg>
в:
<arg value="--e source ${unknown.placeholder.name}"></arg>
Если есть заполнитель, я хочу использовать его для атрибута «вход» тега «применить» (и удалить аргумент «-e»).
Для элемента «применить» доступен тег «srcfile», но я не могу его вызвать (не работает):
<arg value="--e source"></arg>
<srcfile/>
Есть ли у вас предложения о том, как это сделать с собственным объявлением муравья? Можно ли создать обходной путь, используя antcall+fileset (+placeholder)?
Noobish обходной путь состоит в том, чтобы выполнить итерацию через набор файлов и создать временный файл sql со ссылками на файлы sql. В качестве последнего шага: назовите его статическим через «-e». Но это обходной путь, который я хочу удалить (по этому вопросу).
PS: я не хочу использовать функции ant-contrib.
<arg value=".." />
, вам не обязательно использовать</arg>
, просто напишите с/>
. Ах да,... и примите ответ, если вы получили свой. - person Paul Peelen   schedule 22.03.2012