-1

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

count 将始终返回 1
[echo] 计数为 1

4

1 回答 1

1

propertyresource将向concat任务返回单个资源,该任务旨在对文件等资源进行操作。

这段复杂的逻辑最好用内联脚本代替。

<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 任务不是核心 ant 的一部分,它是名为 ant-contrib 的扩展的一部分。我的建议是在调用子模块构建时使用subant 任务。以下答案有一些简单和高级的使用示例:

于 2013-03-23T10:21:15.053 回答