Ant resourcecount,我如何计算属性中存在的逗号分隔数

时间:2013-03-22 05:52:34

标签: ant properties count

我的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

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。以下答案有一些简单而先进的使用示例: