alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Ant example source code file (copy.xml)

This example Ant source code file (copy.xml) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Ant tags/keywords

ant, apache, apache, bld_65036, bld_65036, iso8859_1, nr, nr@, project, project, this, this, title, utf8

The copy.xml source code

<?xml version="1.0"?>

<project name="copy-test" basedir="." default="test1">

  <target name="test1">
    <copy file="copy.xml" tofile="copytest1.tmp" />
  </target>

  <target name="test2">
    <copy file="copy.xml" todir="copytest1dir" overwrite="true"/>
  </target>

  <target name="filtertest">
    <!-- check fix for bugzilla 23154 -->
    <delete quiet="yes" file="copy.filter.out"/>
    <delete quiet="yes" file="copy.filter.inp"/>
    <concat destfile="copy.filter.inp">
PRODUCT_VERSION=6.2.1.4
PRODUCT_BUILD=6.5 (BLD_65036)
PRODUCT_VERSION=6.2.1.4
PRODUCT_BUILD=6.5 (BLD_65036)
    </concat>
    <copy file="copy.filter.inp" tofile="copy.filter.out">
      <filterset begintoken="6" endtoken="4">
        <filter token=".2.1." value="2.6.4" />
      </filterset>
    </copy>
    <concat>
  </target>

  <target name="infinitetest">
    <delete quiet="yes" file="copy.filter.out"/>
    <delete quiet="yes" file="copy.filter.inp"/>
    <concat destfile="copy.filter.inp">
a=b=
    </concat>
    <copy file="copy.filter.inp" tofile="copy.filter.out">
      <filterset begintoken="=" endtoken="=">
        <filter token="b" value="=b="/>
      </filterset>
    </copy>
    <concat>
  </target>

  <target name="test3">
    <!-- create an empty file -->
    <touch file="copytest3.tmp"/>
    <!--wait -->
    <sleep seconds="4"/>
    <!-- copy a different file to two places -->
    <copy file="copy.xml" tofile="copytest3a.tmp" overwrite="true"/>
    <copy file="copy.xml" tofile="copytest3b.tmp" overwrite="true"/>
    <!--wait -->
    <sleep seconds="4"/>
    <!-- copy an old file onto a newer file (should not work) -->
    <copy file="copytest3.tmp" tofile="copytest3b.tmp" />
    <!-- copy an older file onto a new one, should succeed -->
    <copy file="copytest3.tmp" tofile="copytest3c.tmp"
      overwrite="true"
      preservelastmodified="true" />
    <!-- copy a newer file onto an older one (should work) -->
    <copy file="copytest3a.tmp" tofile="copytest3.tmp"
      preservelastmodified="true" />
    <!-- expected state :
      3a.tmp==3.tmp==copy.xml
      timeof(3a.tmp)==timeof(3.tmp)==now()-4
      sizeof(3c)==0
      timeof(3c.tmp)<timeof(3a.tmp);
      3b.tmp==copy.xml
    -->
  </target>

  <target name="test_single_file_fileset">
    <copy tofile="copytest_single_file_fileset.tmp">
      <fileset dir="." includes="copy.xml"/>
    </copy>
  </target>

  <target name="test_single_file_path">
    <copy tofile="copytest_single_file_path.tmp">
      <path>
        <pathelement location="copy.xml"/>
      </path>
    </copy>
  </target>

  <target name="testFilterSet">
    <copy file="copy.filterset" tofile="copy.filterset.tmp">
      <filterset>
        <filter token="TITLE" value="Apache Ant Project"/>
      </filterset>
    </copy>
  </target>

  <target name="testFilterChain">
    <copy file="copy.filterset" tofile="copy.filterchain.tmp">
      <filterchain>
        <replacetokens>
          <token key="TITLE" value="Apache Ant Project"/>
        </replacetokens>
      </filterchain>
    </copy>
  </target>

  <target name="testTranscoding">
    <copy file="copy/input/iso8859-1" tofile="copytest1.tmp"
          encoding="ISO8859_1" outputencoding="UTF8"/>
  </target>

  <target name="testMissingFileIgnore">
    <copy file="not-there" tofile="copytest1.tmp"
          failonerror="false"/>
  </target>

  <target name="testMissingFileBail">
    <copy file="not-there" tofile="copytest1.tmp"
          failonerror="true"/>
  </target>

  <target name="testMissingDirIgnore">
    <copy todir="copytest1dir" failonerror="false">
      <fileset dir="not-there"/>
    </copy>
  </target>

  <target name="testMissingDirBail">
    <copy todir="copytest1dir" failonerror="true">
      <fileset dir="not-there"/>
    </copy>
  </target>

  <property name="to.dir" value="copy-todir-tmp"/>
  <property name="from.dir" value="copy-fromdir-tmp"/>

  <target name="testResource.prepare">
    <mkdir dir="${from.dir}"/>
    <concat destfile="${from.dir}/file1.txt">This is file 1
    <concat destfile="${from.dir}/file2.txt">This is file 2
    <concat destfile="${from.dir}/file3.txt">This is file 3
    <concat destfile="${from.dir}/fileNR.txt">This is file @NR@
  </target>

  <target name="testFileResourcePlain" depends="testResource.prepare">
    <copy todir="${to.dir}" flatten="true">
      <resources>
        <file file="${from.dir}/file1.txt"/>
        <file file="${from.dir}/file2.txt"/>
        <file file="${from.dir}/file3.txt"/>
      </resources>
    </copy>
  </target>

  <target name="testFileResourceWithMapper" depends="testResource.prepare">
    <copy todir="${to.dir}" flatten="true">
      <resources>
        <file file="${from.dir}/file1.txt"/>
        <file file="${from.dir}/file2.txt"/>
        <file file="${from.dir}/file3.txt"/>
      </resources>
      <regexpmapper from="^(.*)\.txt$$" to="\1.txt.bak"/>
    </copy>
  </target>

  <target name="testFileResourceWithFilter" depends="testResource.prepare">
    <copy todir="${to.dir}" flatten="true">
      <resources>
        <file file="${from.dir}/fileNR.txt"/>
      </resources>
      <filterset>
        <filter token="NR" value="42"/>
      </filterset>
    </copy>
  </target>

  <target name="testResourcePlain">
  </target>

  <target name="testResourcePlainWithMapper">
  </target>

  <target name="testResourcePlainWithFilter">
  </target>

  <target name="testOnlineResources">
  </target>

  <target name="testPathAsResource" depends="testResource.prepare">
    <copy todir="${to.dir}">
      <path>
        <fileset dir="${from.dir}"/>
      </path>
    </copy>
  </target>

  <target name="testZipfileset" depends="testResource.prepare">
    <zip destfile="${from.dir}/test.zip" roundup="false">
      <fileset dir="${from.dir}" excludes="*.zip"/>
    </zip>
    <copy todir="${to.dir}">
      <zipfileset src="${from.dir}/test.zip"/>
    </copy>
  </target>

  <target name="prepareDirset">
    <touch mkdirs="true">
      <filelist dir="${from.dir}/dirset">
        <file name="a/x/foo" />
        <file name="a/y/foo" />
        <file name="a/z/foo" />
        <file name="b/x/foo" />
        <file name="b/y/foo" />
        <file name="b/z/foo" />
      </filelist>
    </touch>
    <fail>
      <condition>
        <or>
          <resourcecount when="ne" count="9">
            <dirset id="dirset" dir="${from.dir}/dirset" />
          </resourcecount>
          <resourcecount when="ne" count="6">
            <fileset dir="${from.dir}/dirset" />
          </resourcecount>
        </or>
      </condition>
    </fail>
    <delete dir="${to.dir}/dirset" />
    <fail>
      <condition>
        <available file="${to.dir}/dirset" />
      </condition>
    </fail>
  </target>

  <target name="testDirset" depends="prepareDirset">
    <copy todir="${to.dir}/dirset">
      <resources refid="dirset" />
    </copy>
    <fail>
      <condition>
        <or>
          <resourcecount when="ne" count="9">
            <dirset dir="${to.dir}/dirset" />
          </resourcecount>
          <resourcecount when="ne" count="0">
            <fileset dir="${to.dir}/dirset" />
          </resourcecount>
        </or>
      </condition>
    </fail>
  </target>

  <target name="cleanup">
    <delete file="copytest1.tmp"/>
    <delete file="copytest3.tmp"/>
    <delete file="copytest3a.tmp"/>
    <delete file="copytest3b.tmp"/>
    <delete file="copytest3c.tmp"/>
    <delete file="copytest_single_file_fileset.tmp"/>
    <delete file="copytest_single_file_path.tmp"/>
    <delete file="copy.filterset.tmp"/>
    <delete file="copy.filterchain.tmp"/>
    <delete dir="copytest1dir"/>
    <delete quiet="yes" file="copy.filter.out"/>
    <delete quiet="yes" file="copy.filter.inp"/>
    <delete dir="${from.dir}"/>
    <delete dir="${to.dir}"/>
  </target>

</project>

Other Ant examples (source code examples)

Here is a short list of links related to this Ant copy.xml source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.