build.public.xml
changeset 0 3060119b1292
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build.public.xml	Wed Dec 04 17:00:31 2013 +0100
@@ -0,0 +1,138 @@
+<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>
\ No newline at end of file