echo消息没有显示属性文件中的正确值

时间:2013-03-18 13:51:22

标签: ant

我有一个 local.properties 文件,其中只包含一个值:

student.id=100

我创建了以下 Ant脚本,以便将student.id的值增加 1

 <target name="increase-id">
    <!-- student.id is increased by 1, no problem -->
    <propertyfile file="local.properties">
         <entry key="student.id" type="int" operation="+" value="1" />
     </propertyfile>

     <!--The following echo always show me "Student ID: 1, why?"-->
     <echo message="Student ID: ${student.id}"/>
 </target>

每次运行命令ant increase-id后, local.properties 文件中student.id的值增加1 这里没问题。但是,<echo>消息始终显示Student ID: 1为什么吗

1 个答案:

答案 0 :(得分:1)

这个适用于我:

<project name="increase.test" default="increase-id">

    <target name="increase-id">

        <!-- documentation says that this task is for editing property files -->
        <propertyfile file="local.properties">
            <entry key="student.id" type="int" operation="+" value="1" />
        </propertyfile>

        <!-- so you should load this property after edit -->    
        <property file="local.properties" />
        <echo message="Student ID: ${student.id}"/>

    </target>

</project>

顺便说一下,不要使用相对路径。而不是总是使用绝对路径。如果要加载与build.xml位于同一目录中的属性文件,可以使用<dirname/>任务。

<dirname property="build.dir" file="${ant.file.<projectName>}"/>,

其中:

  1. ${ant.file}是内置属性,表示当前运行的build.xml
  2. <projectName>只是项目名称

    尝试始终使用此模式${ant.file.<projectName>创建dirname,因为如果您只使用${ant.file},它将指示主构建。例如,如果你有构建运行其他构建的构建,那么你将使用${ant.file}它将指示主构建。如果不清楚,只需阅读Apache ant文档并尝试创建简单的构建。