如何从属性文件向属性添加任何数字

use*_*650 2 ant

我有一个房产

base.number = 100

在属性文件中.

我想创建值102,103,105等,具体取决于要添加的值.

如何将数字添加到属性并获得附加值?

Reb*_*bse 7

你不需要额外的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)