Codebase list openrefine-butterfly / bullseye-backports/main build.xml
bullseye-backports/main

Tree @bullseye-backports/main (Download .tar.gz)

build.xml @bullseye-backports/mainraw · history · blame

<?xml version="1.0" encoding="UTF-8"?>

<!--+
    |
    |  Butterfly Build File    
    |                
    +-->
    
<project name="butterfly" default="build" basedir=".">

    <property environment="env"/>

    <condition property="version" value="trunk">
        <not><isset property="version"/></not>
    </condition>

    <condition property="revision" value="rXXXX">
        <not><isset property="revision"/></not>
    </condition>

    <condition property="build.dir" value="build">
        <not><isset property="build.dir"/></not>
    </condition>

    <condition property="dist.dir" value="dist">
        <not><isset property="dist.dir"/></not>
    </condition>

    <condition property="appengine.app_id" value="simile-butterfly">
        <not><isset property="appengine.app_id"/></not>
    </condition>

    <condition property="appengine.version" value="1">
        <not><isset property="appengine.version"/></not>
    </condition>

    <condition property="appengine.sdk.dir" value="/opt/appengine">
        <not><isset property="appengine.sdk.dir"/></not>
    </condition>

    <property name="fullname" value="butterfly-${version}-${revision}" />
    
    <property name="main.dir" value="${basedir}/main" />

    <property name="webapp.dir" value="${main.dir}/webapp" />
    <property name="webapp.src.dir" value="${main.dir}/src" />
    <property name="webapp.lib.dir" value="${webapp.dir}/WEB-INF/lib" />
    <property name="webapp.classes.dir" value="${webapp.dir}/WEB-INF/classes" />

    <property name="appengine.dir" value="${main.dir}/appengine" />

    <property name="server.dir" value="${basedir}/server" />
    <property name="server.src.dir" value="${server.dir}/src" />
    <property name="server.lib.dir" value="${server.dir}/lib" />
    <property name="server.classes.dir" value="${server.dir}/classes" />

    <property name="modules.dir" value="${basedir}/modules" />

    <property name="tests.dir" value="${main.dir}/tests" />
    <property name="tests.lib.dir" value="${tests.dir}/lib" />
    <property name="tests.src.dir" value="${tests.dir}/src" />
    <property name="tests.classes.dir" value="${tests.dir}/classes" />

    <property name="graphics.dir" value="${basedir}/graphics" />
    <property name="conf.dir" value="${basedir}/conf" />
    <property name="tools.dir" value="${basedir}/tools" />
    
    <property name="reports.dir" value="${build.dir}/reports" />

    <property name="built.webapp.name" value="webapp" />
    <property name="built.webapp.dir" value="${build.dir}/${built.webapp.name}" />
    <property name="built.appengine.webapp.dir" value="${build.dir}/appengine" />
    
    <path id="server.class.path">
        <fileset dir="${server.lib.dir}">
            <include name="**/*.jar" />
        </fileset>
        <pathelement path="${server.classes.dir}"/>
    </path>

    <path id="webapp.class.path">
        <fileset dir="${server.lib.dir}">
            <include name="**/servlet-api*.jar" />
        </fileset>
        <fileset dir="${webapp.lib.dir}">
            <include name="**/*.jar" />
        </fileset>
        <pathelement path="${webapp.classes.dir}"/>
    </path>

    <path id="appengine.class.path">
        <path refid="webapp.class.path"/>
        <fileset dir="${appengine.sdk.dir}/lib">
            <include name="shared/**/*.jar" />
        </fileset>
    </path>

    <path id="tests.class.path">
        <path refid="webapp.class.path"/>
        <fileset dir="${tests.lib.dir}">
            <include name="**/*.jar" />
        </fileset>
    </path>

    <!-- ================================================================== -->

    <target name="build_server">
        <mkdir dir="${server.classes.dir}" />
        <javac srcdir="${server.src.dir}" destdir="${server.classes.dir}" debug="true" includeAntRuntime="no">
            <classpath refid="server.class.path" />
        </javac>
        <copy file="${server.src.dir}/log4j.properties" tofile="${server.classes.dir}/log4j.properties"/>
    </target>
            
    <target name="build_webapp">
        <mkdir dir="${webapp.classes.dir}" />
        <javac destdir="${webapp.classes.dir}" debug="true" includeAntRuntime="no">
            <src path="${webapp.src.dir}"/>
            <classpath refid="webapp.class.path" />
        </javac>
        <copy todir="${webapp.classes.dir}">
            <fileset dir="${webapp.src.dir}">
                <include name="**/*.js"/>
            </fileset>
        </copy>
    </target>

    <target name="build_modules" depends="build_webapp, build_server">
        <mkdir dir="${modules.dir}/samples/extended-examples/MOD-INF/classes" />
        <javac srcdir="${modules.dir}/samples/extended-examples/MOD-INF/src" destdir="${modules.dir}/samples/extended-examples/MOD-INF/classes" debug="true" includeAntRuntime="no">
            <classpath refid="webapp.class.path" />
        </javac>
    </target>

    <target name="build_tests" depends="build_webapp, build_server">
        <mkdir dir="${tests.classes.dir}" />
        <javac srcdir="${tests.src.dir}" destdir="${tests.classes.dir}" debug="true" includeAntRuntime="no">
            <classpath refid="tests.class.path" />
        </javac>
        <copy file="${tests.src.dir}/tests.log4j.properties" tofile="${tests.classes.dir}/tests.log4j.properties"/>
        <copy todir="${tests.classes.dir}">
            <fileset dir="${tests.src.dir}">
                <include name="**/*.js"/>
                <include name="**/*.html"/>
            </fileset>
        </copy>
    </target>

    <target name="build" depends="build_server, build_webapp, build_modules"/>

    <target name="jar_server" depends="build_server">
        <jar destfile="${build.dir}/${fullname}-server.jar" basedir="${server.classes.dir}"/>
    </target>
    
    <target name="jar_webapp" depends="build_webapp">
        <jar destfile="${build.dir}/${fullname}.jar" basedir="${webapp.classes.dir}"/>
        <jar destfile="${build.dir}/${fullname}-sources.jar" basedir="${webapp.src.dir}"/>
    </target>

    <target name="jar" depends="build, jar_server, jar_webapp"/>

    <!-- ================================================================== -->

    <target name="prepare_webapp_appengine" depends="jar_webapp, build_modules">
        <mkdir dir="${built.appengine.webapp.dir}" />
        
        <copy todir="${built.appengine.webapp.dir}">
            <fileset dir="${webapp.dir}">
                <include name="**/*"/>
                <exclude name="WEB-INF/lib/*log4j*"/>
                <exclude name="WEB-INF/lib-src/**"/>
            </fileset>
        </copy>
        
        <copy file="${build.dir}/${fullname}.jar" tofile="${built.appengine.webapp.dir}/WEB-INF/lib/${fullname}.jar"/>
        
        <copy todir="${built.appengine.webapp.dir}/WEB-INF/lib" flatten="true">
            <fileset dir="${appengine.sdk.dir}/lib/user">
                <include name="**/*.jar" />
            </fileset>
        </copy>

        <copy file="modules.properties" tofile="${built.appengine.webapp.dir}/WEB-INF/modules.properties"/>
        
        <copy todir="${built.appengine.webapp.dir}/modules">
            <fileset dir="${modules.dir}">
                <include name="**/*"/>
                <exclude name="MOD-INF/src/**"/>
                <exclude name="MOD-INF/classes/**"/>
                <exclude name="MOD-INF/lib-src/**"/>
                <exclude name="**/.*"/>
                <exclude name="**/.*/**"/>
            </fileset>
        </copy>        

        <copy todir="${built.appengine.webapp.dir}">
            <fileset dir="${appengine.dir}">
                <include name="**/*"/>
            </fileset>
        </copy>
        
        <replace file="${built.appengine.webapp.dir}/WEB-INF/appengine-web.xml">
            <replacefilter token="$APPID" value="${appengine.app_id}"/>
            <replacefilter token="$VERSION" value="${appengine.version}"/>
        </replace>
                
    </target>

    <!-- ================================================================== -->
    
    <target name="prepare_reports">
        <mkdir dir="${reports.dir}" />
    </target>

    <target name="findbugs" depends="build,prepare_reports">
        <taskdef 
            name="findbugs" 
            classname="edu.umd.cs.findbugs.anttask.FindBugsTask"
            classpath="${findbugs.dir}/lib/findbugs-ant.jar" 
        />
        <findbugs jvmargs="-Xmx1024m" home="${findbugs.dir}" output="html" outputFile="${reports.dir}/findbugs.html" >
          <auxClasspath refid="webapp.class.path" />
          <sourcePath path="${tests.src.dir}" />
          <class location="${webapp.classes.dir}" />
        </findbugs>        
    </target>
    
    <target name="pmd" depends="prepare_reports">
        <path id="pmd.path">
            <fileset dir="${pmd.dir}/lib" includes="*.jar"/>
        </path>    
        <taskdef 
            name="pmd" 
            classname="net.sourceforge.pmd.ant.PMDTask"
            classpathref="pmd.path" 
        />
        <pmd rulesetfiles="${conf.dir}/pmd.rules.xml" targetjdk="1.6" encoding="UTF-8">
            <formatter type="html" toFile="${reports.dir}/pmd.html" toConsole="true"/>
            <fileset dir="${server.src.dir}">
                <include name="**/*.java"/>
            </fileset>
            <fileset dir="${webapp.src.dir}">
                <include name="**/*.java"/>
            </fileset>
            <fileset dir="${tests.src.dir}">
                <include name="**/*.java"/>
            </fileset>
        </pmd>
    </target>    

    <target name="cpd" depends="prepare_reports">
        <path id="pmd.path">
            <fileset dir="${pmd.dir}/lib" includes="*.jar"/>
        </path>    
        <taskdef 
            name="cpd" 
            classname="net.sourceforge.pmd.cpd.CPDTask"
            classpathref="pmd.path" 
        />
        <cpd minimumTokenCount="100" outputFile="${reports.dir}/cpd.txt" encoding="UTF-8">
            <fileset dir="${server.src.dir}">
                <include name="**/*.java"/>
            </fileset>
            <fileset dir="${webapp.src.dir}">
                <include name="**/*.java"/>
            </fileset>
        </cpd>
    </target>    

    <target name="jslint" depends="prepare_reports">
        <path id="jslint.path">
            <fileset dir="${jslint.dir}" includes="*.jar"/>
        </path>    
        <taskdef 
            name="jslint"
            classname="com.googlecode.jslint4java.ant.JSLintTask"
            classpathref="jslint.path" 
        />
        <jslint>
            <formatter type="plain" destfile="${reports.dir}/jslint.txt" />
            <fileset dir="${webapp.src.dir}">
              <include name="**/*.js" />
            </fileset>
        </jslint>        
    </target>    

    <!-- ================================================================== -->

    <target name="clean">
        <delete file="${build.dir}/${fullname}.jar" />
        <delete file="${build.dir}/${fullname}-server.jar" />
        <delete dir="${server.classes.dir}" />
        <delete dir="${webapp.classes.dir}" />
        <delete dir="${tests.classes.dir}" />
    </target>

    <target name="distclean" depends="clean">
        <delete dir="${build.dir}" />
        <delete dir="${dist.dir}" />
        <delete dir="${tools.dir}" />
    </target>

</project>