-1

私のxmlは機能しません:

コマンドラインで実行すると、ant compile -Dmodules = a、b、c

私のビルドファイルは、モジュールパラメータ内のモジュールの数をカウントし、forループを使用してそれらを1つずつコンパイルする必要があります

<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]countは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 に答える