build.public.xml
author Tomas Zeman <tzeman@volny.cz>
Sun, 08 Dec 2013 15:10:29 +0100
changeset 8 39fedddacd88
parent 0 3060119b1292
permissions -rw-r--r--
Updated README w/ project description

<project name="web4j-jar" default='all' basedir="." >

   <!-- 
    This is a courtesy build script provided for your use.
    Please edit to suit your needs.

    You can use whatever compiler suits your needs.
    The 'official' web4j.jar uses JDK 1.5, in order to remain compatible 
    with older environments. But you can use more modern JDK's if you wish.
   -->  
  
  <description>
    Web4j.jar
  </description>
  
  <!-- Override default property values with an external properties file, if present. -->
  <property file='build.properties'/>

  <!-- Default property values, if not overridden elsewhere: -->
  <property name='build' location='build' />
  <property name='app.version' value='1.0.0'/>
  <property name='app.name' value='web4j'/>
  <property name='distro-name' value='web4j'/>
  <tstamp><format property='build.time' pattern='yyyy-MM-dd HH:mm:ss'/></tstamp>

  <path id='compile.classpath'>
    <fileset dir='lib'>
       <include name='*.jar'/>
    </fileset>
  </path>

  <!-- Simply extends the compile.classpath with your own compiled classes. -->
  <path id='run.classpath'>
    <path refid='compile.classpath'/>
    <path location='classes'/>
  </path>
  
  <fileset id='class.files' dir='classes'>
     <include name='**/*.class'/>
  </fileset>

  <fileset id='files.for.jar' dir='classes'>
    <exclude name='**/*.java'/>
    <exclude name='**/doc-files/'/>
  </fileset>
  
  <fileset id='test.classes' dir='classes'>
    <include name='**/TEST*.java'/>
  </fileset>

  <!-- A connection to this URL is used when building javadoc. -->
  <condition property='jdk.javadoc.visible' value='true' else='false'> 
    <http url='http://docs.oracle.com/javase/6/docs/api/' />
  </condition>
  
  <echo>
    Application: ${app.name} ${app.version}
    Build File : ${ant.file} 
    Run Date   : ${build.time}
    Run by     : ${user.name}
    Build Dir  : ${build}
    Base Dir   : ${basedir}
    Java Home  : ${java.home}
    Connected to the web   : ${jdk.javadoc.visible}
  </echo>
    
  <echo message='Create build directory, and its subdirectories.'/>
  <mkdir dir="${build}/javadoc"/>
  <mkdir dir="${build}/dist"/>

  <!-- Now define the targets, which use the properties and datatypes defined above. -->

   <target name='clean' description="Delete all build artifacts." >
     <delete dir='${build}'/>
     <delete>
      <fileset refid='class.files'/>
     </delete>
     <mkdir dir="${build}/javadoc"/>
     <mkdir dir="${build}/dist"/>
   </target>
  
   <target name='compile' description='Compile source files and place beside source.'>
     <javac srcdir="classes">   
       <classpath refid='compile.classpath'/>
     </javac>
     <!-- Here's a simple way of debugging a path, fileset, or patternset, using its refid: -->
     <echo>Classpath: ${toString:compile.classpath}</echo>
   </target> 
  
   <target name='jar' description='Create a jar file for distribution.' depends='compile'>
    <jar destfile='${build}/dist/${distro-name}.jar' duplicate='preserve'>
      <fileset refid='files.for.jar'/>
      <manifest>
        <attribute name='Specification-Version' value='${app.version}'/> 
        <attribute name='Specification-Title' value='${app.name}' />
        <attribute name='Implementation-Version' value='${app.version}'/> 
        <attribute name='Implementation-Title' value='${app.name}' />
      </manifest>
    </jar>
   </target>
  
  <target name='javadoc' description='Generate javadoc.' >
    <javadoc  
      use='true' author='true'  version='true'
      overview='classes\overview.html'  
      access='package' 
      sourcepath='classes'
      packagenames='*.*' 
      destdir='${build}/javadoc'
      windowtitle='${app.name} ${app.version}'
      noqualifier='java.*:javax.*:com.sun.*'   
      linksource='true'
    >
      <classpath refid='compile.classpath'/>
      <link href='http://docs.oracle.com/javase/6/docs/api/'/>      
      <header><![CDATA[<h1>${app.name} ${app.version}</h1>]]></header>
    </javadoc>
  </target>
  
  <target name='distro-binary' description='Create zip file with executable jar, docs.' depends='jar, javadoc'>
    <zip destfile='${build}/dist/${distro-name}-binary.zip' duplicate='preserve'>
      <zipfileset dir='${build}/dist/' includes='${distro-name}.jar'/>
      <zipfileset dir='${build}/javadoc' prefix='javadoc' />
    </zip>
  </target>
  
  <target name='distro-source' description='Create zip file with project source code.'>
    <zip destfile='${build}/dist/${distro-name}-src.zip' duplicate='preserve' >
      <!-- exclude items specific to the author's IDE setup: -->
      <zipfileset dir='.' excludes='.classpath, .project'/>
    </zip>
  </target>
  
  <target name='all' description='Create all build artifacts.' depends='clean, compile, jar, javadoc, distro-binary, distro-source'>
    <echo>Finished creating all build artifacts.</echo>
  </target>
  
</project>