Skip to content

Instantly share code, notes, and snippets.

@bensimian
Forked from jasdeepkhalsa/build.xml
Created June 22, 2013 18:18
Show Gist options
  • Select an option

  • Save bensimian/5841947 to your computer and use it in GitHub Desktop.

Select an option

Save bensimian/5841947 to your computer and use it in GitHub Desktop.

Revisions

  1. Jasdeep Khalsa created this gist Jan 10, 2013.
    146 changes: 146 additions & 0 deletions build.xml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,146 @@
    <?xml version="1.0" encoding="utf-8"?>
    <project name="tutorialProject" default="prod" basedir="/Users/addy/buildTut/">

    <description>Client-side ANT build file example</description>

    <target name="-load.properties"
    description="Set properties for this build">
    <!--YUI Compressor location-->
    <property name="yui.dir" value="${basedir}/yuicompressor/build/yuicompressor-2.4.2.jar"/>
    <!--Source JS dir-->
    <property name="src.js.dir" value="${basedir}/js"/>
    <!--Source CSS dir-->
    <property name="src.css.dir" value="${basedir}/css"/>
    <!--Source Lint/Hint dir-->
    <property name="jslint.js" value="${basedir}/lint/jshint.js"/>
    <!--Rhino dir-->
    <property name="js.jar" value="${basedir}/lint/rhino/js.jar"/>
    <!--Output dir-->
    <property name="build.dir" value="build"/>
    <!--Build version information -->
    <property name="build.major" value="1"/>
    <property name="build.minor" value="1"/>
    </target>



    <!--Create build directories-->
    <target name="-init" depends="-load.properties"
    description="Create build directory structure">
    <!--Create the time stamp for the new build-->
    <tstamp>
    <format property="TODAY" pattern="EEE, d MMM yyyy HH:mm:ss Z"/>
    </tstamp>

    <!--Delete previous build files-->
    <delete dir="${build.dir}"/>

    <!--Recreate the build directories-->
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.dir}/js"/>
    <mkdir dir="${build.dir}/css"/>

    <!--Log the build timestamps to file-->
    <echo file="${build.dir}/js/tstamp.txt" append="false">Build Date: ${TODAY}</echo>
    <echo file="${build.dir}/css/tstamp.txt" append="false">Build Date: ${TODAY}</echo>
    </target>


    <!--JS Lint-->
    <target depends="-init" name="-js.lint">
    <pathconvert pathsep=" " property="jsfiles">
    <fileset dir="${build.dir}/js/">
    <include name="*.js"/>
    </fileset>
    </pathconvert>
    <exec dir="${build.dir}/js/" executable="java" failonerror="true">
    <arg line="-jar ${js.jar} ${jslint.js} ${jsfiles}"/>
    </exec>
    <echo>Finished</echo>
    </target>


    <!--Concatenate JS files-->
    <target name="-js.concatenate" depends="-js.lint"
    description="Concatenates specified JavaScript files">
    <concat destfile="${build.dir}/js/concat.js">
    <fileset
    dir="${src.js.dir}"
    includes="*.js"
    excludes="first.js, second.js"/>
    </concat>
    <echo>Finished</echo>
    </target>



    <!--Concatenate CSS files-->
    <target name="-css.concatenate" depends="-init"
    description="Concatenates specified CSS files">
    <concat destfile="${build.dir}/css/styles.css">
    <!--first.css and second.css should be first in the concatenated file-->
    <filelist
    dir="${src.css.dir}"
    files="first.css, second.css"/>
    <!--All of the other files in the directory should appear after.-->
    <fileset
    dir="${src.css.dir}"
    includes="*.css"
    excludes="first.css, second.css"/>
    </concat>
    <echo>Finished</echo>
    </target>



    <!--Minify JS files-->
    <target name="-js.minify" depends="-js.concatenate"
    description="Minifies JavaScript files">
    <apply executable="java" parallel="false" dest="${build.dir}/js">
    <fileset
    dir="${build.dir}/js"
    includes="concat.js"/>
    <arg line="-jar"/>
    <arg path="${yui.dir}"/>
    <srcfile/>
    <arg line="-o"/>
    <mapper type="glob" from="*.js" to="*-min.js"/>
    <targetfile/>
    </apply>
    <echo>Finished</echo>
    </target>



    <!--Minify CSS files-->
    <target name="-css.minify" depends="-css.concatenate"
    description="Minifies CSS files">
    <apply executable="java" parallel="false" dest="${build.dir}/css">
    <fileset
    dir="${build.dir}/css"
    includes="styles.css"/>
    <arg line="-jar"/>
    <arg path="${yui.dir}"/>
    <arg line="--line-break 0"/>
    <srcfile/>
    <arg line="-o"/>
    <mapper type="glob" from="*.css" to="*-min.css"/>
    <targetfile/>
    </apply>
    <echo>Finished</echo>
    </target>


    <!--Build-->
    <target name="prod"
    description="Builds project files for production use"
    depends="
    -load.properties,
    -init,
    -js.concatenate,
    -js.lint,
    -css.concatenate,
    -js.minify,
    -css.minify">
    </target>
    </project>