我有一个本地。属性文件,它只包含一个值:
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中student.id
的值都会被刷新。属性文件增加1。这里没问题。但是,<echo>
消息总是显示Student ID: 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/>
task.
<dirname property="build.dir" file="${ant.file.<projectName>}"/>,
地点:
-
${ant.file}
是内置属性,指示当前正在运行的build.xml <projectName>
只是项目名称尝试总是使用
${ant.file.<projectName>
模式创建dirname,因为如果您只使用${ant.file}
,它将指示主构建。例如,如果您有一个运行其他构建的构建,并且在其他构建中您将使用${ant.file}
,它将指示主构建。如果不清楚,请阅读Apache ant文档并尝试创建简单的构建。