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

Ant example source code file (build.xml)

This example Ant source code file (build.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

bugzilla, bugzilla, junk, mac2unix, mac2unix, q, report, report, unicodebig, unicodebig

The build.xml source code

<?xml version="1.0"?>
<project name="fixcrlf" default="cleanup" basedir=".">
  <target name="init">
    <mkdir dir="result" />
  </target>

  <target name="cleanup">
    <delete dir="result" />
  </target>

  <macrodef name="assertequal">
    <attribute name="junk" default="" />
    <attribute name="name" default="Junk@{junk}.java" />
    <attribute name="file1" default="result/@{name}" />
    <attribute name="file2" default="expected/@{name}" />
    <sequential>
      <fail message="@{file1} and @{file2} are different">
        <condition>
          <not>
            <filesmatch file1="@{file1}" file2="@{file2}" />
          </not>
        </condition>
      </fail>
    </sequential>
  </macrodef>

  <target name="test1" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="Junk1.java"
             javafiles="true" tab="add" eol="crlf" eof="asis" />
    <assertequal junk="1" />
  </target>

  <target name="test2" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="Junk2.java"
             javafiles="true" tab="add" cr="add" eol="crlf" eof="asis" />
    <assertequal junk="2" />
  </target>

  <target name="test3" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="Junk3.java"
             javafiles="true" tab="remove" eol="lf" eof="asis" />
    <assertequal junk="3" />
  </target>

  <target name="test4" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="Junk4.java"
             javafiles="true" tab="remove" eol="lf" eof="asis" />
    <assertequal junk="4" />
  </target>

  <target name="test5" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="Junk5.java"
             tab="remove" eol="lf" eof="asis" />
    <assertequal junk="5" />
  </target>

  <target name="test6" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="Junk6.java"
             tab="add" cr="remove" eol="crlf" eof="asis" />
    <assertequal junk="6" />
  </target>

  <target name="test7" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="Junk7.java"
             tab="add" cr="add" eof="asis" />
    <assertequal junk="7" />
  </target>

  <target name="test8" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="Junk8.java"
             javafiles="true" tab="add" cr="add" eof="add" />
    <assertequal junk="8" />
  </target>

  <target name="test9" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="Junk9.java"
             javafiles="true" tab="remove" cr="remove" eof="remove" />
    <assertequal junk="9" />
  </target>

  <target name="testMacLines" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="Mac2Unix" eol="lf" />
    <assertequal name="Mac2Unix" />
  </target>

  <target name="testNoOverwrite" depends="test1">
    <touch file="result/Junk1.java" millis="0" />
    <fixcrlf srcdir="input" destdir="result"
             includes="Junk1.java" preservelastmodified="false"
             javafiles="true" tab="add" eol="crlf" eof="asis" />
    <fail message="overwrote unchanged output file">Q
      <condition>
        <not>
          <isfileselected file="result/Junk1.java">
            <date when="equal" millis="0" />
          </isfileselected>
        </not>
      </condition>
    </fail>
  </target>

  <target name="testEncoding" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="input.crlf.utf16"
             javafiles="false" cr="remove" encoding="UnicodeBig" />
    <assertequal file1="result/input.crlf.utf16"
                 file2="expected/input.lf.utf16" />
  </target>

  <target name="testOutputEncoding" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="input.crlf.utf16"
             javafiles="false" eol="lf" encoding="UnicodeBig"
             outputencoding="ascii" />
    <assertequal file1="result/input.crlf.utf16"
                 file2="expected/input.lf.ascii" />
  </target>

  <target name="testLongLines" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="longlines.crlf"
             javafiles="false" cr="remove" />
    <assertequal file1="result/longlines.crlf"
                 file2="expected/longlines.lf" />
  </target>

  <target name="testCrCrLfSequence-unix" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="crcrlf" eol="lf" />
    <assertequal file1="result/crcrlf"
                 file2="expected/crcrlf.unix" />
  </target>

  <target name="testCrCrLfSequence-dos" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="crcrlf" eol="crlf" />
    <assertequal file1="result/crcrlf"
                 file2="expected/crcrlf.dos" />
  </target>

  <target name="testCrCrLfSequence-mac" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="crcrlf" eol="cr" />
    <assertequal file1="result/crcrlf"
                 file2="expected/crcrlf.mac" />
  </target>

  <target name="testFixlastDos" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="fixlastfalse.lf" eol="crlf" />
    <assertequal file1="result/fixlastfalse.lf"
                 file2="expected/fixlast.dos" />
  </target>

  <target name="testFixlastFalseMac" depends="init">
    <fixcrlf srcdir="input" destdir="result"
             includes="fixlastfalse.lf" eol="cr" fixlast="false" />
    <assertequal file1="result/fixlastfalse.lf"
                 file2="expected/fixlastfalse.mac" />
  </target>

  <!-- Bugzilla Report 20840 -->
  <target name="createParentDirs" depends="init">
    <fixcrlf srcdir="." destdir="result" includes="input/Junk1.java" />
  </target>

  <target name="testFixFile" depends="init">
    <fixcrlf file="input/longlines.crlf" destdir="result" />
    <fail message="didn't create output file">
      <condition>
        <not>
          <available file="result/longlines.crlf" />
        </not>
      </condition>
    </fail>
  </target>

  <target name="testFixFileExclusive" depends="init">
    <fixcrlf file="input/longlines.crlf" srcdir="input" destdir="result"/>
  </target>

  <target name="testPreserveLastModified" depends="init">
    <fixcrlf file="input/longlines.crlf" destdir="result"
             preservelastmodified="true" />
    <fail>
      <condition>
        <not>
          <uptodate srcfile="result/longlines.crlf"
                    targetfile="input/longlines.crlf" />
        </not>
      </condition>
    </fail>

    <touch file="result/longlines.crlf" millis="0" />

    <fixcrlf file="result/longlines.crlf" destdir="result" eol="lf"
             preservelastmodified="true" />

    <fileset id="fs" file="result/longlines.crlf">
      <date when="equal" millis="0" />
    </fileset>
    <property name="fs" refid="fs" />
    <fail unless="fs" />
  </target>

  <target name="testFilter1" depends="init">
    <copy file="input/Junk1.java" todir="result" overwrite="true">
      <filterchain>
        <fixcrlf javafiles="true" tab="add"
                 eol="crlf" eof="asis" />
      </filterchain>
    </copy>
    <assertequal junk="1" />
  </target>

  <target name="testFilter2" depends="init">
    <copy file="input/Junk2.java" todir="result" overwrite="true">
      <filterchain>
        <fixcrlf javafiles="true" tab="add" cr="add" eol="crlf" eof="asis" />
      </filterchain>
    </copy>
    <assertequal junk="2" />
  </target>

  <target name="testFilter3" depends="init">
    <copy file="input/Junk3.java" todir="result" overwrite="true">
      <filterchain>
        <fixcrlf javafiles="true" tab="remove" eol="lf" eof="asis" />
      </filterchain>
    </copy>
    <assertequal junk="3" />
  </target>

  <target name="testFilter4" depends="init">
    <copy file="input/Junk4.java" todir="result" overwrite="true">
      <filterchain>
        <fixcrlf javafiles="true" tab="remove" eol="lf" eof="asis" />
      </filterchain>
    </copy>
    <assertequal junk="4" />
  </target>

  <target name="testFilter5" depends="init">
    <copy file="input/Junk5.java" todir="result" overwrite="true">
      <filterchain>
        <fixcrlf tab="remove" eol="lf" eof="asis" />
      </filterchain>
    </copy>
    <assertequal junk="5" />
  </target>

  <target name="testFilter6" depends="init">
    <copy file="input/Junk6.java" todir="result" overwrite="true">
      <filterchain>
        <fixcrlf tab="add" cr="remove" eol="crlf" eof="asis" />
      </filterchain>
    </copy>
    <assertequal junk="6" />
  </target>

  <target name="testFilter7" depends="init">
    <copy file="input/Junk7.java" todir="result" overwrite="true">
      <filterchain>
        <fixcrlf tab="add" cr="add" eof="asis" />
      </filterchain>
    </copy>
    <assertequal junk="7" />
  </target>

  <target name="testFilter8" depends="init">
    <copy file="input/Junk8.java" todir="result" overwrite="true">
      <filterchain>
        <fixcrlf javafiles="true" tab="add" cr="add" eof="add" />
      </filterchain>
    </copy>
    <assertequal junk="8" />
  </target>

  <target name="testFilter9" depends="init">
    <copy file="input/Junk9.java" todir="result" overwrite="true">
      <filterchain>
        <fixcrlf javafiles="true" tab="remove" cr="remove" eof="remove" />
      </filterchain>
    </copy>
    <assertequal junk="9" />
  </target>

  <target name="testCannotDoubleEof" depends="test8">
    <fixcrlf file="result/Junk8.java"
             javafiles="true" tab="add" cr="add" eof="add" />
    <assertequal junk="8" />
  </target>

  <target name="testTabInLiteralInComment">
    <copy file="input/tab_in_literal_in_comment" todir="result"
          overwrite="true">
      <filterchain>
        <fixcrlf javafiles="true" tab="remove" eol="lf" fixlast="false" />
      </filterchain>
    </copy>
    <assertequal name="tab_in_literal_in_comment" />
  </target>
</project>

Other Ant examples (source code examples)

Here is a short list of links related to this Ant build.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.