我想写一个ant宏,如果提供的属性包含某个字符串,它将调用fail任务。我知道如何在ant中进行字符串比较的唯一方法是使用javascript。我有这样的事情:
<macrodef name="check-for-error">
<attribute name="input"/>
<sequential>
<echo message="@{input}"/>
<script language="javascript">
<![CDATA[
var response= "@{input}";
if(response.indexOf("FAIL") !=-1){
project.setProperty("error","true");
}
]]>
</script>
<fail message="INPUT FAILED" if="${error}"/>
</sequential>
</macrodef>
这种方法的问题是我在javascript中设置了一个全局属性,而ant不允许你重置属性。我知道ant有能力设置本地属性。如何从javascript中访问本地属性?或者有更好的方法可以一起做到这一点吗?
答案 0 :(得分:8)
<condition property="missing-properties">
<matches pattern="YOUR-PATTERN" string="${THE-ATTRIBUTE}"/>
</condition>
<fail message="Input failed!" if="missing-properties"/>
答案 1 :(得分:1)
本地化该属性所需要做的就是在Javascript之前调用local
task。
例如:
<sequential>
<echo message="@{input}"/>
<local name="error"/> <!-- Added this line. -->
<script language="javascript">
...
另外,您可以在Javascript中使用本地化属性:
<script language="javascript"><![CDATA[
localiser = project.createTask( "local" );
localiser.setName( "error" );
localiser.perform( );
...