ApacheAnt:尝试使用嵌套for循环将列表映射到参数。我到底应该做什么?
所以,我有一个${locales}和${externs}的列表,我正在尝试这样做。它不起作用了。Ant说ApacheAnt:尝试使用嵌套for循环将列表映射到参数。我到底应该做什么?,ant,Ant,所以,我有一个${locales}和${externs}的列表,我正在尝试这样做。它不起作用了。Ant说java不支持嵌套的“for”元素。我怀疑我的方法是错误的。我该怎么做呢 <for list="${locales}" param="locale"> <sequential> <java jar="whatever.jar" fork="true"> <for list="${externs}" param="extern-f
java不支持嵌套的“for”元素。
我怀疑我的方法是错误的。我该怎么做呢
<for list="${locales}" param="locale">
<sequential>
<java jar="whatever.jar" fork="true">
<for list="${externs}" param="extern-file">
<arg line='-f "--externs=${extern_dir}/@{extern-file}"' />
</for>
<arg line="... more stuff" />
</java>
</sequential>
</for>
<代码> > P>这里有一些你可以考虑的备选方案。
实现一个定制的Ant任务来完成您需要的任务
如果您拥有正在调用的Java代码,请对其进行更新,使其更符合您的需求,例如:
2.1。正在传递区域设置和外部设置的列表
2.2。接受文件输入或标准输入(都可以从Ant写入)
如果您没有Java代码,请实现您自己的脚本或Java代码,以提供一个适配器,该适配器可以轻松地从Ant传递到目标所需的参数
这里有一些你可以考虑的备选方案。
实现一个定制的Ant任务来完成您需要的任务
如果您拥有正在调用的Java代码,请对其进行更新,使其更符合您的需求,例如:
2.1。正在传递区域设置和外部设置的列表
2.2。接受文件输入或标准输入(都可以从Ant写入)
如果您没有Java代码,请实现您自己的脚本或Java代码,以提供一个适配器,该适配器可以轻松地从Ant传递到目标所需的参数
Ant支持前缀和后缀,这可能会解决这个问题
如果${externs}
是逗号分隔的列表,则需要使用ant contrib将其分隔为空格
概述:
<propertyregex property="externs.arg"
input="${externs}"
regexp="," replace=" " />
<for list="${locales}" param="locale">
<sequential>
<java jar="whatever.jar" fork="true">
<arg line="${externs.arg}"
prefix='-f "--externs=${extern_dir}/'
suffix='"' />
<arg line="... more stuff" />
</java>
</sequential>
</for>
Ant支持前缀和后缀,这可能会解决这个问题
如果${externs}
是逗号分隔的列表,则需要使用ant contrib将其分隔为空格
概述:
<propertyregex property="externs.arg"
input="${externs}"
regexp="," replace=" " />
<for list="${locales}" param="locale">
<sequential>
<java jar="whatever.jar" fork="true">
<arg line="${externs.arg}"
prefix='-f "--externs=${extern_dir}/'
suffix='"' />
<arg line="... more stuff" />
</java>
</sequential>
</for>
您是要为每个外部文件运行一次whater.jar,还是为每个具有多个-f--externs=[file]参数的语言环境运行一次?后者。(注释长度必须至少为15个字符)您是要为每个外部文件运行一次whater.jar,还是为每个具有多个-f--externs=[file]参数的区域设置运行一次?后者。(注释长度必须至少为15个字符)前缀是Ant 1.8中的一项新功能,否。。。(停留在1.7版本,除非我花半天时间调试为什么构建会在v1.8版本下中断。也不是一个假设)@fennec-是的,它们是从1.8版本开始的。我确实用pathconvert任务整理了一个答案,但我删除了它!等我有时间再发。基本思想是,在for循环之前,使用pathconvert任务生成arg行。。。(停留在1.7版本,除非我花半天时间调试为什么构建会在v1.8版本下中断。也不是一个假设)@fennec-是的,它们是从1.8版本开始的。我确实用pathconvert任务整理了一个答案,但我删除了它!等我有时间再发。基本思想是,在for循环之前,使用pathconvert任务生成arg行。