我的xml不起作用:
当我在命令行中运行时 ant compile -Dmodules = a,b,c
我的构建文件需要计算模块参数中的模块数量,使用for循环
逐个编译它们<target name="count_modules">
<resourcecount property="count">
<tokens>
<concat>
<filterchain>
<tokenfilter>
<stringtokenizer delims=","/>
</tokenfilter>
</filterchain>
<propertyresource name="modules" />
</concat>
</tokens>
</resourcecount>
<echo message="count is ${count}" />
</target>
计数将始终返回1
[echo] count是1
答案 0 :(得分:1)
propertyresource会将单个资源返回到concat任务,该任务旨在处理文件等资源。
这一复杂的逻辑最好由内联script取代。
<project name="myproject" default="count_modules">
<property name="modules" value="a,b,c"/>
<target name="count_modules">
<script language="javascript"><![CDATA[
modules = project.getProperty("modules");
project.setProperty("count", modules.split(",").length);
]]></script>
<echo message="Number of modules: ${count}"/>
</target>
</project>
for task不是核心蚂蚁的一部分,它是名为ant-contrib的扩展的一部分。我的建议是在调用子模块构建时使用subant task。以下答案有一些简单而先进的使用示例: