你不需要额外的ant任务或额外的脚本语言来进行数学运算,只需使用java附带的内置javascript脚本引擎(因为jdk 1.6,Sun自己的基于rhino 1.6R2的实现)结合ant api并放入一个macrodef用于重用,即:
<project>
<property name="foo" value="22"/>
<echo>$${foo} => ${foo}</echo>
<!-- create macrodef -->
<macrodef name="math">
<attribute name="operation"/>
<attribute name="operator1"/>
<attribute name="operator2"/>
<attribute name="result"/>
<sequential>
<script language="javascript">
tmp = 0;
switch ("@{operation}")
{
case "+" :
tmp = parseInt("@{operator1}") + parseInt("@{operator2}");
break;
case "-" :
tmp = parseInt("@{operator1}") - parseInt("@{operator2}");
break;
case "*" :
tmp = parseInt("@{operator1}") * parseInt("@{operator2}");
break;
case "/" :
tmp = parseInt("@{operator1}") / parseInt("@{operator2}");
break;
}
project.setProperty("@{result}", tmp);
</script>
</sequential>
</macrodef>
<!-- create new properties -->
<math operation="/" operator1="${foo}" operator2="11" result="foooo"/>
<math operation="+" operator1="${foo}" operator2="21" result="fooo"/>
<!-- overwrite existing property foo -->
<math operation="+" operator1="${foo}" operator2="1" result="foo"/>
<echo>
create => $${fooo} => ${fooo}
create => $${foooo} => ${foooo}
overwrite => $${foo} => ${foo}
</echo>
</project>
Run Code Online (Sandbox Code Playgroud)
如果需要覆盖现有的userproperty(=通过ant -f foobar.xml -Dmyuserproperty = foo ...在命令行上定义的那些属性),则必须使用以下方法:
project.setUserProperty()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6376 次 |
| 最近记录: |