Искам да изпълня всички 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>
Ако има контейнер, тогава искам да го използвам за атрибута "input" на маркера "apply" (и да премахна аргумента "-e").
Има наличен таг "srcfile" за елемента "apply", но не мога да го извикам (не работи):
<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