SmartGWT ant script : Big Project Ant Script « Ant « Java






SmartGWT ant script


<project name="SmartGWT" default="build" basedir=".">
  <property name="smartgwt.root" location="." />
  <property name="project.tail" value="" />
  <import file="${smartgwt.root}/common.ant.xml" />

  <!-- "build" is the default when subprojects are directly targetted -->
  <property name="target" value="build" />

  <target name="dist" depends="main, doc, samples" description="Run the distributions">
    <gwt.ant dir="distro-source" />
  </target>

     <target name="doc" depends="buildtools, main" description="Build doc">
    <gwt.ant dir="doc" />
  </target>

    <target name="main"  description="Run SmartGWT">
    <gwt.ant dir="main" />
  </target>


  <target name="samples" depends="main" description="Build samples">
    <gwt.ant dir="samples" />
  </target>

  <target name="buildtools" description="Build the build tools">
    <gwt.ant dir="build-tools" />
  </target>


    <target name="-do" depends="dist" description="Run all subprojects" />

  <target name="build" description="Builds GWT">
    <antcall target="-do">
      <param name="target" value="build" />
    </antcall>
  </target>

  <target name="checkstyle" description="Static analysis of GWT source">
    <antcall target="-do">
      <param name="target" value="checkstyle" />
    </antcall>
  </target>

  <target name="test" depends="build" description="Test GWT">
    <antcall target="-do">
      <param name="target" value="test" />
    </antcall>
  </target>

  <target name="clean" description="Cleans the entire GWT build">
    <delete dir="${smartgwt.build}" />
  </target>

    <target name="smartclient-jar" depends="setup-smartclient-jar" description="make smartclient.jar">
        <property environment="env"/>
        <property name="SC_HOME" value="${env.SC_HOME}"/>
        <property name="SC_VER" value="${env.SC_VER}"/>

        <fail unless="SC_HOME" message="You must pass the SC_HOME environment variable"/>
        <fail unless="SC_VER" message="You must pass the SC_VER environment variable"/>

        <available file="${SC_HOME}/smartclientSDK" type="dir" property="smartclient.sdk.exists"/>

        <fail unless="smartclient.sdk.exists"
              message="Cannot find '${SC_HOME}/smartclientSDK' SDK directory; perhaps you should verify the SC_HOME environment variable"/>

        <mkdir dir="${smartgwt.tools.lib}/sc/${SC_VER}"/>
        
    <replace dir="${SC_HOME}/smartclientSDK/isomorphic/skins" includes="**/load_skin.js" token="showShadow:true" value="showShadow:false"/>
    
        <zip destfile="${smartgwt.tools.lib}/sc/${SC_VER}/smartclient.jar">
            <zipfileset dir="${SC_HOME}/smartclientSDK/isomorphic/system/modules" includes="*.js"
                        prefix="com/smartclient/public/sc/modules"/>

            <zipfileset dir="${SC_HOME}/smartclientSDK/isomorphic/system/development"                        includes="ISC_DBConsole.js,ISC_DeveloperConsole.js,ISC_DocViewer.js,ISC_FileViewer.js,ISC_FileLoader.js,ISC_SyntaxHiliter.js,ISC_Tools.js,ISC_Core.js,ISC_Foundation.js,ISC_Containers.js,ISC_Grids.js,ISC_Forms.js,ISC_DataBinding.js"
                        prefix="com/smartclient/tools/public/sc/system/development"/>

            <zipfileset dir="${SC_HOME}/smartclientSDK/isomorphic/system/helpers" includes="printFrame.*,empty.html,*.css,*.svg"
                        prefix="com/smartclient/debug/public/sc/system/helpers"/>
        <zipfileset dir="${SC_HOME}/smartclientSDK/isomorphic/system/helpers" includes="printFrame.*,empty.html,*.css,*.svg"
                  prefix="com/smartclient/public/sc/system/helpers"/>

            <zipfileset dir="${SC_HOME}/smartclientSDK/source/client/modules" includes="*.js"
                        prefix="com/smartclient/debug/public/sc/modules-debug"/>

            <zipfileset dir="${SC_HOME}/smartclientSDK/source/client/schema" includes="*.xml"
                        prefix="com/smartclient/public/sc/schema"/>


            <zipfileset dir="${SC_HOME}/smartclientSDK/isomorphic/system/schema" includes="*.xsl,*.wsdl"
                        prefix="com/smartclient/debug/public/sc/system/schema"/>

            <zipfileset dir="${SC_HOME}/smartclientSDK/isomorphic/system/schema" includes="*.xsl,*.wsdl"
                        prefix="com/smartclient/public/sc/system/schema"/>

            <zipfileset dir="${SC_HOME}/smartclientSDK/source/client/application" includes="*.js"
                        prefix="com/smartclient/debug/public/sc/client/application"/>
            <zipfileset dir="${SC_HOME}/smartclientSDK/source/client/browser" includes="*.js"
                        prefix="com/smartclient/debug/public/sc/client/browser"/>
            <zipfileset dir="${SC_HOME}/smartclientSDK/source/client/communications" includes="*.js"
                        prefix="com/smartclient/debug/public/sc/client/communications"/>
            <zipfileset dir="${SC_HOME}/smartclientSDK/source/client/debug" includes="*.js"
                        prefix="com/smartclient/debug/public/sc/client/debug"/>
            <zipfileset dir="${SC_HOME}/smartclientSDK/source/client/event" includes="*.js"
                        prefix="com/smartclient/debug/public/sc/client/event"/>
            <zipfileset dir="${SC_HOME}/smartclientSDK/source/client/language" includes="*.js"
                        prefix="com/smartclient/debug/public/sc/client/language"/>
            <zipfileset dir="${SC_HOME}/smartclientSDK/source/client/standalone" includes="*.js"
                        prefix="com/smartclient/debug/public/sc/client/standalone"/>
            <zipfileset dir="${SC_HOME}/smartclientSDK/source/client/tools" includes="*.js"
                        prefix="com/smartclient/debug/public/sc/client/tools"/>
            <zipfileset dir="${SC_HOME}/smartclientSDK/source/client/widgets" includes="*.js"
                        prefix="com/smartclient/debug/public/sc/client/widgets"/>
            <zipfileset dir="${SC_HOME}/smartclientSDK/source/client/widgets/form" includes="*.js"
                        prefix="com/smartclient/debug/public/sc/client/widgets/form"/>

            <zipfileset dir="${smartgwt.build.out}/temp/schema" includes="*.js"
                        prefix="com/smartclient/debug/public/sc/client/schema"/>

            <zipfileset dir="${smartgwt.build.out}/temp" includes="initsc.js"
                        prefix="com/smartclient/public/sc"/>

            <zipfileset dir="${smartgwt.build.out}/temp" includes="Log.html"
                        prefix="com/smartclient/tools/public/sc/system/helpers"/>

            <zipfileset dirmode="755" filemode="644" src="${smartgwt.tools.lib}/sc/smartclient_tpl.jar"/>
            
      <zipfileset dir="${SC_HOME}/smartclientSDK/isomorphic/skins/Enterprise" includes="**/*.*" excludes="*.gz,*.psd"
                                  prefix="com/smartclient/theme/enterprise/public/sc/skins/Enterprise"/>  
          
             <zipfileset dir="${SC_HOME}/smartclientSDK/isomorphic/skins/EnterpriseBlue" includes="**/*.*" excludes="*.gz,*.psd"
                                  prefix="com/smartclient/theme/enterpriseblue/public/sc/skins/EnterpriseBlue"/>

        </zip>
    
    <zip destfile="${smartgwt.tools.lib}/sc/${SC_VER}/smartgwt-skins.jar">
      <zipfileset dirmode="755" filemode="644" src="${smartgwt.tools.lib}/sc/skins_tpl.jar"/>
      
      <zipfileset dir="${SC_HOME}/smartclientSDK/isomorphic/skins/BlackOps" includes="**/*.*" excludes="*.gz"
                        prefix="com/smartclient/theme/blackops/public/sc/skins/BlackOps"/>

            <zipfileset dir="${SC_HOME}/smartclientSDK/isomorphic/skins/SilverWave" includes="**/*.*" excludes="*.gz"
                        prefix="com/smartclient/theme/silverwave/public/sc/skins/SilverWave"/>

            <zipfileset dir="${SC_HOME}/smartclientSDK/isomorphic/skins/TreeFrog" includes="**/*.*" excludes="*.gz"
                        prefix="com/smartclient/theme/treefrog/public/sc/skins/TreeFrog"/>
      
      <zipfileset dir="${SC_HOME}/smartclientSDK/isomorphic/skins/fleet" includes="**/*.*" excludes="*.gz"
                        prefix="com/smartclient/theme/fleet/public/sc/skins/fleet"/>
            
    </zip>

    <delete dir="${smartgwt.root}/main/src/com/smartclient"/>
      <unjar dest="${smartgwt.root}/main/src" src="${smartgwt.tools.lib}/sc/${SC_VER}/smartclient.jar"/>
    <move file="${smartgwt.root}/fmpp/data/referenceDocs.xml" tofile="${smartgwt.root}/fmpp/data/referenceDocs-bak.xml"/>
    <copy file="${SC_HOME}/smartclientSDK/isomorphic/system/reference/referenceDocs.xml" tofile="${smartgwt.root}/fmpp/data/referenceDocs.xml"/>  
  
    </target>


    <target name="setup-smartclient-jar">
        <delete dir="${smartgwt.build.out}/target"/>
        <delete dir="${smartgwt.build.out}/temp/schema"/>

        <copy todir="${smartgwt.build.out}/temp/schema">
            <fileset dir="${SC_HOME}/smartclientSDK/source/client/schema" includes="*.xml"/>
            <globmapper from="*.xml" to="*.xml.js"/>
        </copy>

        <echo file="${smartgwt.build.out}/temp/initsc.js">if(!isomorphicDir){var isomorphicDir = "sc/";}</echo>

    </target>    

  <target name="diff-report" depends="main">

    <get src="http://www.smartclient.com/smartgwt/builds/release-${smartgwt.previous_version}/smartgwt.jar" 
        dest="${smartgwt.build.out}/smartgwt-${smartgwt.previous_version}.jar" 
        verbose="false"
        usetimestamp="true"/>
    
    <property name="dependencyfinder.home" location="${smartgwt.tools.lib}/dependency-finder/1.2.1" />
    <taskdef name="jarjardiff" classname="com.jeantessier.dependencyfinder.ant.JarJarDiff">
      <classpath>
        <pathelement location="${dependencyfinder.home}/DependencyFinder.jar" />
        <pathelement location="${dependencyfinder.home}/jakarta-oro.jar" />
        <pathelement location="${dependencyfinder.home}/log4j.jar" />
      </classpath>
    </taskdef>
        
    <property name="PREVIOUS_JAR" value="${smartgwt.build.out}/smartgwt-${smartgwt.previous_version}.jar"/>

        <available file="${PREVIOUS_JAR}" type="file" property="oldjar.exists"/>

        <fail unless="oldjar.exists"
              message="Cannot find file '${PREVIOUS_JAR}' "/>

      <jarjardiff destfile="${smartgwt.build.out}/diff.xml"
                  name="SmartGWT"
                  oldlabel="${smartgwt.previous_version}"
                  newlabel="${smartgwt.version}">
          <old>
              <pathelement location="${PREVIOUS_JAR}"/>
          </old>
          <new>
              <pathelement location="${project.lib}"/>
          </new>
      </jarjardiff>
      <xslt style="${dependencyfinder.home}/etc/DiffToHTML.xsl"
            in="${smartgwt.build.out}/diff.xml"
            out="${smartgwt.root}/distro-source/core/src/api-changes.html"/>
      
  </target>
  
</project>


File: common.ant.xml

<project name="common">

        <!-- gwt.build.iscasesensitivefs is true if the filesystem of the
          build machine is case-sensitive, false otherwise.  Update with
          new lines for any supported platforms with case-insensitive
          filesystems
        -->
        <condition property="gwt.build.iscasesensitivefs" else="false">
          <not>
            <or>
              <os family="windows"/>
            </or>
          </not>
        </condition>

  <property name="test.ant.file" location="${smartgwt.root}/${project.tail}/build.xml" />
    <echo  message="${test.ant.file}"/>
    <condition property="project.valid">
    <equals arg1="${ant.file}" arg2="${test.ant.file}"
                  casesensitive="${gwt.build.iscasesensitivefs}"/>
  </condition>

    <fail unless="project.valid" message="This build file is in an inconsistent state." />

  <!-- Global Properties -->
  <property environment="env" />

  
  <property name="smartgwt.version" value="2.0" />
  <property name="smartgwt.version.major" value="2" />
  <property name="smartgwt.version.minor" value="0" />
  <property name="smartgwt.previous_version" value="1.3" />

    <condition property="smartgwt.tools.check" value="${env.SMARTGWT_TOOLS}" else="${smartgwt.root}/../tools">
    <isset property="env.SMARTGWT_TOOLS" />
  </condition>
    <property name="smartclient.version" value="7.0-2.0" />

  <property name="smartgwt.tools" location="${smartgwt.tools.check}" />
  <property name="smartgwt.tools.lib" location="${smartgwt.tools}/lib" />
  <property name="smartgwt.tools.antlib" location="${smartgwt.tools}/antlib" />
  <property name="smartgwt.tools.redist" location="${smartgwt.tools}/redist" />
  <property name="smartgwt.build" location="${smartgwt.root}/build" />
  <property name="smartgwt.build.out" location="${smartgwt.build}/out" />
  <property name="smartgwt.build.lib" location="${smartgwt.build}/lib" />
  <property name="smartgwt.build.staging" location="${smartgwt.build}/staging" />
  <property name="smartgwt.build.dist" location="${smartgwt.build}/dist" />
  <property name="project.build" location="${smartgwt.build.out}/${project.tail}" />
  <property name="project.lib" location="${smartgwt.build.lib}/${ant.project.name}.jar" />
  <property name="javac.out" location="${project.build}/bin" />
  <property name="javac.junit.out" location="${project.build}/bin-test" />
  <property name="javac.debug" value="true" />
  <property name="javac.debuglevel" value="lines,vars,source" />
  <property name="javac.encoding" value="utf-8" />
  <property name="javac.source" value="1.5" />
  <property name="javac.nowarn" value="true" />
  <property name="junit.out" location="${project.build}/test" />
    <property name="gwt.doctool.jar" location="${smartgwt.tools.lib}/gwt-build-tools/gwt-doctool.jar" />


    <!-- Sanity check -->
  <available file="${smartgwt.tools}" type="dir" property="gwt.tools.exists" />
  <fail unless="gwt.tools.exists" message="Cannot find '${smartgwt.tools}' tools directory; perhaps you should define the GWT_TOOLS environment variable" />

  <!-- Platform identification -->
  <condition property="build.host.islinux">
    <and>
      <os family="unix" />
      <not>
        <contains string="${os.name}" substring="mac" casesensitive="false" />
      </not>
    </and>
  </condition>
  <condition property="build.host.platform" value="linux">
    <isset property="build.host.islinux" />
  </condition>

  <condition property="build.host.ismac">
    <and>
      <os family="unix" />
      <contains string="${os.name}" substring="mac" casesensitive="false" />
    </and>
  </condition>
  <condition property="build.host.platform" value="mac">
    <isset property="build.host.ismac" />
  </condition>

  <condition property="build.host.iswindows">
    <os family="windows" />
  </condition>
  <condition property="build.host.platform" value="windows">
    <isset property="build.host.iswindows" />
  </condition>
  <fail unless="build.host.platform" message="Building on ${os.name} is not supported" />

  <condition property="junit.platform.args" value="-XstartOnFirstThread" else="">
    <equals arg1="${build.host.platform}" arg2="mac" casesensitive="false" />
  </condition>
  
  
    
    <!--GWT jars location-->
    <property name="gwt.version" value="2.0" />

  <condition property="gwt_home" value="${env.GWT_HOME}" else="${smartgwt.tools.lib}/gwt/${gwt.version}/${build.host.platform}">
    <isset property="env.GWT_HOME" />
  </condition>
  
  <echo>Using GWT from : ${gwt_home}</echo>
   
    <property name="gwt.user.jar" location="${gwt_home}/gwt-user.jar" />
  <property name="gwt.dev.jar" location="${gwt_home}/gwt-dev-${build.host.platform}.jar" />
  <property name="gwt.dev2.jar" location="${gwt_home}/gwt-dev.jar" />

    <!-- JUnit support -->
  <property name="smartgwt.dev.staging.jar" location="${smartgwt.build.staging}/smartgwt-${smartgwt.version}/smartgwt.jar" />
  <property name="smartgwt.junit.port" value="8889" />
  <property name="smartgwt.junit.testcase.includes" value="**/*Test.class"/>
  
  <!--
    Comma delimited list of host and path components on which to run remote browser testing.
  -->
  <property name="smartgwt.remote.browsers" value="" />


  <!-- Pulls in tasks defined in ant-contrib, i.e. foreach -->
  <taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
      <pathelement location="${smartgwt.tools.antlib}/ant-contrib-1.0b3.jar" />
    </classpath>
  </taskdef>

  <!-- Global Custom Tasks -->
  <presetdef name="gwt.ant">
    <ant inheritall="false" target="${target}">
      <propertyset>
        <propertyref name="smartgwt.version" />
        <propertyref name="smartgwt.junit.port" />
        <propertyref name="smartgwt.remote.browsers" />
      </propertyset>
    </ant>
  </presetdef>

  <presetdef name="gwt.javac">
    <javac srcdir="src" destdir="${javac.out}" debug="${javac.debug}" debuglevel="${javac.debuglevel}" source="${javac.source}" nowarn="${javac.nowarn}" encoding="${javac.encoding}" target="1.5"/>
  </presetdef>

  <presetdef name="gwt.jar">
    <jar destfile="${project.lib}" update="true" duplicate="preserve" index="true" />
  </presetdef>

  <macrodef name="gwt.junit">
    <!-- TODO: make this more generic / refactor so it can be used from dev/core -->
    <attribute name="test.args" default="" />
    <attribute name="test.out" default="" />
    <attribute name="test.reports" default="@{test.out}/reports" />
    <attribute name="test.cases" default="" />
    <sequential>
      <taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask">
        <classpath>
          <pathelement location="${smartgwt.tools.lib}/junit/junit-3.8.1.jar" />
          <pathelement location="${smartgwt.tools.antlib}/ant-junit-1.6.5.jar" />
        </classpath>
      </taskdef>

      <echo message="Writing test results to @{test.reports} for @{test.cases}" />
      <mkdir dir="@{test.reports}" />

      <echo message="${javac.out} ${javac.junit.out}" />
      <junit dir="@{test.out}" fork="yes" printsummary="yes" haltonfailure="false">
        <jvmarg line="${junit.platform.args}" />
        <sysproperty key="gwt.args" value="@{test.args}" />
                <!--the hosted mode library is searched based on the path of this library-->
                <sysproperty key="gwt.devjar" value="${gwt.dev.jar}" />
        <sysproperty key="java.awt.headless" value="true" />
 
        <classpath>
          <pathelement location="${smartgwt.root}/${project.tail}/src" />
          <pathelement location="${smartgwt.root}/${project.tail}/test" />
          <pathelement location="${javac.junit.out}" />
          <pathelement location="${javac.out}" />
          <pathelement location="${smartgwt.dev.staging.jar}" />
          <pathelement location="${gwt.user.jar}" />
          <pathelement location="${gwt.dev.jar}" />
          <pathelement location="${smartgwt.tools.lib}/junit/junit-3.8.1.jar" />
        </classpath>

        <formatter type="plain" />
        <formatter type="xml" />

        <batchtest todir="@{test.reports}">
          <fileset refid="@{test.cases}" />
        </batchtest>
      </junit>
    </sequential>
  </macrodef>

  <macrodef name="gwt.tgz.cat">
    <attribute name="destfile" />
    <element name="tar.elements" implicit="true" optional="true" />
    <sequential>
      <taskdef name="tar.cat" classname="com.google.gwt.ant.taskdefs.TarCat" classpath="${smartgwt.build.lib}/ant-gwt.jar" />
      <tar.cat destfile="${project.dist}" compression="gzip" longfile="gnu">
        <tar.elements />
      </tar.cat>
    </sequential>
  </macrodef>

  <macrodef name="gwt.checkstyle">
    <element name="sourcepath" implicit="yes" optional="true" />
    <sequential>
      <taskdef resource="checkstyletask.properties" classpath="${smartgwt.tools.antlib}/checkstyle-all-4.2.jar;${gwt.build.lib}/gwt-customchecks.jar" />
      <checkstyle config="${smartgwt.root}/eclipse/settings/code-style/gwt-checkstyle.xml" maxWarnings="0">
        <property key="checkstyle.header.file" file="${smartgwt.root}/eclipse/settings/code-style/google.header" />
        <sourcepath />
      </checkstyle>
    </sequential>
  </macrodef>

  <macrodef name="property.ensure">
    <attribute name="name" />
    <attribute name="location" />
    <attribute name="message" default="Cannot find dependency ${@{name}}" />
    <attribute name="unless" default="__nonexistent_property__" />
    <sequential>
      <property name="@{name}" location="@{location}" />
      <condition property="@{name}.exists">
        <or>
          <available file="${@{name}}" />
          <isset property="@{unless}" />
        </or>
      </condition>
      <fail unless="@{name}.exists" message="@{message}" />
    </sequential>
  </macrodef>

  <!-- Default implementations of the required targets; projects should
  override the ones that matter -->
  <target name="all" depends="verify" />
  <target name="verify" depends="checkstyle, test" description="Verify this project" />
  <target name="checkstyle" description="Static analysis of source" />
  <target name="test" depends="build" description="Test this project" />
  <target name="build" description="Build and (maybe) package this project" />

  <target name="clean" description="Cleans this project's intermediate and output files">
    <delete dir="${project.build}" />
  </target>

</project>


File: platform.ant.xml

<project name="platforms">
  <import file="${smartgwt.root}/common.ant.xml" />

  <!-- "build" is the default when subprojects are directly targetted -->
  <property name="target" value="build" />

  <available file="core/build.xml" type="file" property="core.exists" />
  <target name="core" description="Run core" if="core.exists">
    <gwt.ant dir="core" />
  </target>

  <target name="linux" depends="core" description="Run linux">
    <gwt.ant dir="linux" />
  </target>

  <target name="windows" depends="core" description="Run windows">
    <gwt.ant dir="windows" />
  </target>

  <target name="mac" depends="core" description="Run mac">
    <gwt.ant dir="mac" />
  </target>

    <!--only windows build required for now-->
    <target name="-do" depends="windows" description="Run all platforms" />

  <target name="build" description="Build each platforms">
    <antcall target="-do">
      <param name="target" value="build" />
    </antcall>
  </target>

  <target name="checkstyle" description="Static analysis of source for each platform">
    <antcall target="-do">
      <param name="target" value="checkstyle" />
    </antcall>
  </target>

  <target name="test" depends="build" description="Test each platform">
    <antcall target="-do">
      <param name="target" value="test" />
    </antcall>
  </target>

</project>

 








Related examples in the same category

1.Ant script for xmlgraphics-commons
2.nutch ant script
3.rhino ant build script
4.apache solr ant script
5.Tomcat ant build script
6.OFBiz ant build script
7.Apache Lenya Build System
8.Apache pivot ant build script
9.XmlSchema ant script
10.xml security
11.velocity tools ant script
12.weka build script
13.xml bean ant script
14.xml graphics common ant script
15.uPortal ant script
16.Build file to fetch maven2 tasks; extracted from (Ant's) fetch.xml
17.Build file to fetch optional libraries for Apache Ant
18.Ant build script
19.Build script for apache-cassandra-0.5.1-src
20.apache-log4j-site\build.xml
21.apache-roller-src-4.0.1
22.Build script from apache dbutils
23.Fop build script
24.Google guice ant script
25.GWT ant script
26.hadoop ant build script
27.jakarta jmeter ant script
28.jakarta oro ant script
29.jakarta regexp ant script
30.jedit build script
31.jibx ant build script
32.lucene ant build script