我想执行所有在给定目录中阻止的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>
如果有占位符,那么我想将它用作“apply”标记的“input”属性(并删除参数“-e”)。
“apply”元素有一个“srcfile”标签,但我无法调用它(不起作用):
<arg value="--e source"></arg>
<srcfile/>
您对如何使用本机蚂蚁声明有建议吗? 是否可以使用antcall + fileset(+占位符)构建变通方法?
noobish解决方法是通过文件集进行迭代并创建一个带有sql文件引用的临时sql文件。作为最后一步:通过“-e”将其称为静态。但这是我要删除的解决方法(通过这个问题)。
PS:我不想使用ant-contrib功能。
答案 0 :(得分:0)
为什么不使用ant sql task,它的目的是做你想做的事情?
否则,您可以使用srcfile
嵌套元素:
<apply ... parallel="false">
<...>
<arg value="--e source" />
<srcfile/>
<fileset ...></fileset>
</apply>
manual page of the apply task上有一个完整的例子。