<!--
  Copyright 2002,2004 The Apache Software Foundation.
  
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at
  
       http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<project default="echoFoo" name="ant-test" basedir=".">

  <property name="foo5.1" value="${foo5}"/>

  <target name="writeFoo3Bar3">
    <echo message="foo3 = bar3" file="test.properties"/>
  </target>

  <target name="readWriteFoo4.1Foo4">
    <echo message="foo4.1 = ${foo4}" file="test.properties"/>
  </target>

  <target name="readWriteFoo5.1Foo5InStart">
    <echo message="foo5.1 = ${foo5.1}" file="test.properties"/>
  </target>

  <target name="echoFoo">
    <echo message="${foo}"/>
  </target>

</project>