9

でマクロ定義を定義しAnt、 を使用javascriptして作業を行っています。この場合、私は a を検証していtimezoneます。

<macrodef name="validateTimeZone">
    <attribute name="zone" />
    <sequential>
        <echo>result: ${envTZResult}</echo>
        <echo>  validating timezone: @{zone}</echo>
        <script language="javascript"><![CDATA[
            importClass(java.util.TimeZone);
            importClass(java.util.Arrays);
            var tz = project.getProperty("zone");
            println("    got attribute: " + tz);
            var result = Arrays.asList(TimeZone.getAvailableIDs()).contains(tz); //testing if timezone is known
            project.setProperty("zoneIsValid", result);
        ]]> 
        </script>
    </sequential>
</macrodef>

問題はproject.getProperty()、渡された属性の値を取得しないことです。javascript内から属性の値を取得する方法を誰かが知っていますか?

4

2 に答える 2

13

間違ったタイプのタグを使用していたことが判明しました。スクリプトを使用して Ant タスクを定義するには、 ではscriptdefなく andを使用する必要がありmacrodefました。タスク内の属性とネストされた要素にアクセスするための事前定義されたオブジェクトがscriptdefあります。

これは、Ant で JavaScript から属性にアクセスする場合に機能します。

<scriptdef name="validateTimeZone" language="javascript">
    <attribute name="zone" />
    <![CDATA[
        importClass(java.util.TimeZone);
        importClass(java.util.Arrays);
        var tz = attributes.get("zone"); //get attribute defined for scriptdef
        println("    got attribute: " + tz);
        var result = Arrays.asList(TimeZone.getAvailableIDs()).contains(tz); //testing if timezone is known
        project.setProperty("zoneIsValid", result);
    ]]> 
</scriptdef>
于 2013-04-21T22:18:09.670 に答える