我有一个 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
的为什么吗
答案 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>}"/>,
其中:
${ant.file}
是内置属性,表示当前运行的build.xml <projectName>
只是项目名称
尝试始终使用此模式${ant.file.<projectName>
创建dirname,因为如果您只使用${ant.file}
,它将指示主构建。例如,如果你有构建运行其他构建的构建,那么你将使用${ant.file}
它将指示主构建。如果不清楚,只需阅读Apache ant文档并尝试创建简单的构建。