Ant 应用文件集和文件作为命令输入
我将使用以下命令使用 mysql commnd 导入一组 sql 文件。
<apply dir="${basedir}" executable="mysql" failonerror="true" parallel="true">
<arg value="-u${db.main.user}" />
<arg value="-p${db.main.password}" />
<arg value="-P${db.main.port}" />
<arg value="-h${db.main.host}" />
<arg value="-D${db.main.database}" />
<srcfile/>
<fileset dir="${db.main.path_to_dump}">
<filename name="keyword_category_rel.sql"/>
<filename name="keyword_classification.sql"/>
</fileset>
</apply>
问题是 mysql 命令将文件视为命令输入而不是参数。那么有没有办法将文件集中的文件作为输入而不是参数提供?
另一种选择是使用 -e 参数,它接受文件中的 sql 代码,但如何将文件集列表的文件中的数据读取到属性中?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
要在
apply
任务中传递每个“迭代器”文件的内容,您可以使用输入 重定向器。例如:将处理
sql.dir
下找到的每个文件作为mysql
调用的输入流。我省略了所有 mysql 凭据参数;他们会被需要。
在您的示例中,您为文件集指定了两个
filename
元素,但都不包含任何通配符 - 请注意,在fileset
文档它说:因此,您的示例文件集实际上将匹配零个文件。
您还可以考虑使用 Ant
sql
任务为了这。To pass the content of each 'iterator' file in an
apply
task you can use an input redirector. For example:will process each file found under the
sql.dir
as the input stream of amysql
invocation.I've omitted all the mysql credential args; they would be needed.
In your example you specify two
filename
elements for the fileset, but neither contains any wildcard - note that in thefileset
docs it says:So your example fileset will actually match zero files.
You might also look into using the Ant
sql
task for this.出于同样的原因,另一位用户询问 Ant run command with Pipes 。也许那里的解决方案可以解决您的问题。
Another user asked about Ant run command with pipes for the same reason. Maybe the solutions there will solve your problem.
尝试将 exec 任务与 Ant 插件 Flaka 提供的 for 循环结合使用 像这样:
Try the exec task combined with a for loop provided by Ant addon Flaka like that :