hackedteam/core-blackberry

View on GitHub
RCSBlackBerry/ant_build/build.common.xml

Summary

Maintainability
Test Coverage
<project name="bb.common" basedir=".">

    <taskdef resource="antenna.properties" classpath="${ht.bb.home}/lib/antenna-bin-1.0.2.jar" />

    <!-- Compilation directories -->
    <property name="j2mewtk.home" location="C:\Java_ME_platform_SDK_3.0" />
    <property name="jde.home" location="C:\Developer\eclipse_bb\plugins\net.rim.ejde.componentpack4.5.0_4.5.0.28\components" />
    <property name="bb.buildjars.home" location="${jde.home}/bin" />
    <property name="ht.bb.home" location="C:\Users\zeno\HT\RCSBlackBerry\Workspace\RCSBlackBerry" />

    <property name="blackberry.certificate.dir" location="${ht.bb.home}/sign" />
    <property name="wtk.proguard.home" location="${ht.bb.home}/lib/proguard4.6" />
    <property name="wtk.home" location="${j2mewtk.home}" />
    <property name="antenna.jar" value="${ht.bb.home}/lib/antenna-bin-1.2.1-beta.jar" />

    <property name="compile.name" value="" />

    <property name="net_rim_api.jar" location="${jde.home}/lib/net_rim_api.jar" />

    <!-- Internal properties -->

    <property name="wtk.cldc.version" value="1.1" />
    <property name="wtk.midp.version" value="2.0" />
    <!-- property name="obfuscation" value="true" -->
    <property name="resources" location="res" />
    <property name="lib" location="lib" />
    <property name="bin" location="bin/${compile.name}" />
    <property name="output.cod" location="deliverables/Standard/${jde.version}/${compile.name}" />

    <property name="preprocessed.src" location="${bin}/preprocessed" />
    <property name="unpreverified.classes" location="${bin}/unpreverified" />
    <property name="obfuscated.classes" location="${bin}/obfuscated" />
    <property name="final.classes" location="${bin}/final" />

    <property name="name" value="${codename}" />

    <property name="template.jad" value="templates/template.jad" />
    <property name="template.manifest" value="templates/template.manifest" />
    <property name="manifestfile" value="templates/MANIFEST.MF" />
    <property name="template.alx" value="templates/template.alx" />

    <property name="jadfile" location="${bin}/tojar/${name}.jad" />
    <property name="jarfile" location="${bin}/tojar/${name}.jar" />
    <property name="alxfile" location="${bin}/tojar/${name}.alx" />
    <property name="temp.jar" location="${bin}/tojar/${name}_t.jar" />
    <property name="obfuscated.jar" location="${bin}/tojar/${name}_t_o.jar" />
    <property name="preverified.jar" location="${bin}/tojar/${name}_p.jar" />

    <taskdef name="wtkpreprocess" classname="de.pleumann.antenna.WtkPreprocess" classpath="${antenna.jar}" />
    <taskdef name="wtkbuild" classname="de.pleumann.antenna.WtkBuild" classpath="${antenna.jar}" />
    <taskdef name="wtkpreverify" classname="de.pleumann.antenna.WtkPreverify" classpath="${antenna.jar}" />
    <taskdef name="wtkpackage" classname="de.pleumann.antenna.WtkPackage" classpath="${antenna.jar}" />
    <taskdef name="wtkrapc" classname="de.pleumann.antenna.WtkRapc" classpath="${antenna.jar}" />
    <taskdef name="wtkobfuscate" classname="de.pleumann.antenna.WtkObfuscate" classpath="${antenna.jar}" />

    <target name="init" depends="clean">
        <echo message="=== Init ${bin} ===" />
        <mkdir dir="${bin}" />
        <mkdir dir="${bin}/tojar" />
        <mkdir dir="${preprocessed.src}" />
        <mkdir dir="${unpreverified.classes}" />
        <mkdir dir="${obfuscated.classes}" />
        <mkdir dir="${final.classes}" />
        <mkdir dir="${output.cod}" />
    </target>

    <target name="clean">
        <echo message="=== Clean ${name} ===" />
        <delete file="${name}.jad" />
        <delete file="${name}.jar" />
        <delete file="${codename}.cod" />
        <delete file="${codename}.lst" />
        <delete file="${codename}.debug" />
        <delete file="${codename}.csl" />
        <delete file="${codename}.cso" />
        <delete dir="${bin}" />
        <delete dir="${output.cod}" />

        <echo message="Init ${name}" />
    </target>

    <!-- Preprocess the code -->
    <target name="preprocess">
        <echo message="=== Preprocess ===" />
        <copy todir="${preprocessed.src}">
            <fileset dir="${src}">
                <exclude name="**/tests/" />
            </fileset>
        </copy>
        <replace dir="${preprocessed.src}" token="//#preprocess" value="//!preprocess" />
        <wtkpreprocess verbose="false" srcdir="${preprocessed.src}" destdir="${preprocessed.src}" symbols="${preprocess.symbols}">
        </wtkpreprocess>
    </target>

    <!-- Compile the code -->
    <target name="javacompile" depends="preprocess">
        <echo message="=== Compile ===" />
        <echo message="   Libs: ${libs} ${line.separator}" />
        <wtkbuild preverify="true" srcdir="${preprocessed.src}" destdir="${unpreverified.classes}" bootclasspath="${libs}" />
    </target>

    <!-- Preverify the compiled code -->
    <target name="preverify" depends="javacompile">
        <echo message="=== Preverify ===" />
        <wtkpreverify srcdir="${unpreverified.classes}" destdir="${final.classes}" classpath="${libs}" />
    </target>

    <!-- Version the JAD and MANIFEST Files -->
    <target name="version" depends="preverify">
        <echo message="=== Manifest ===" />

        <!-- Version the MANIFEST -->
        <filter token="buildVer" value="${ver}" />
        <filter token="midletName" value="${name}" />
        <copy file="${template.manifest}" tofile="${manifestfile}" filtering="true" overwrite="true" />

        <!-- Version the JAD file -->
        <filter token="buildVer" value="${ver}" />
        <filter token="midletName" value="${name}" />
        <filter token="jarName" value="${name}.jar" />
        <filter token="vendorField" value="${vendor}" />
        <filter token="descriptionField" value="${description}" />
        <filter token="midletFlags" value="${flags}" />
        <echo message="flags: ${flags}" />
        <copy file="${template.jad}" tofile="${jadfile}" filtering="true" overwrite="true" />

        <!-- Version the Alx file -->
        <filter token="buildVer" value="${ver}" />
        <filter token="midletName" value="${name}" />
        <filter token="vendorField" value="${vendor}" />
        <filter token="descriptionField" value="${description}" />
        <copy file="${template.alx}" tofile="${alxfile}" filtering="true" overwrite="true" />

    </target>

    <!-- Package (JAR) the compiled classes. This also modifies the JAD file with JAR size information -->
    <target name="package" depends="version">
        <echo message="=== Package ===" />
        <delete dir="${final.classes}/META-INF" />
        <wtkpackage jarfile="${jarfile}" jadfile="${jadfile}">
            <fileset dir="${final.classes}" />
            <fileset dir="${resources}" />
        </wtkpackage>
    </target>

    <!--Obfuscate the compiled code with ProGuard  
        tojarfile="${obfuscated.jar}" 
        http://supportforums.blackberry.com/t5/Java-Development/Compiling-obfuscated-jar-file-using-RAPC/td-p/285322
        http://forums.java.net/node/703624
        -->
    <!-- -keep public class com.httpdemo.HTTPDemo  -dontobfuscate -->
    <target name="obfuscate" depends="package">
        <echo message="=== Obfuscate ===" />
        <wtkobfuscate if="obfuscation" jarfile="${jarfile}" jadfile="${jadfile}" bootclasspath="${net_rim_api.jar}" classpath="${bb.lib}">
            <argument value="-keep public class ${main.class}{
                    public static void main(java.lang.String[]);
                } -dontshrink -repackageclasses '' -allowaccessmodification -microedition -dontusemixedcaseclassnames" />
        </wtkobfuscate>
    </target>

    <!-- Invoke the RAPC compiler. This step is based the RAPC's usage: rapc.exe import=RIM_APIs codename=Codename JAD-File JAR-File -->
    <target name="rapc" description="RIM COD Compiler" depends="obfuscate">
        <echo message="=== Rapc ===" />
        <wtkrapc quiet="true" midlet="false" jadfile="${jadfile}" source="${jarfile}" codename="${codename}" import="${net_rim_api.jar}" destdir="${output.cod}" />
    </target>

    <!-- Once the COD file has been generated, move generated file to output directory -->
    <target name="build" depends="rapc">
        <echo message="=== Build! ===" />

        <copy file="${alxfile}" tofile="${output.cod}/${codename}.alx" failonerror="false" />
        <copy file="${jadfile}" tofile="${output.cod}/${codename}.jad" failonerror="false" />
        <copy file="${jarfile}" tofile="${output.cod}/${codename}.jar" failonerror="false" />

    </target>

    <!-- Sign the COD  -->
    <target name="sign">
        <echo message="=== Sign ===" />

        <echo message="dir: ${output.cod}" />
        <echo message="cod: ${codename}.cod" />

        <!--<sigtool jdehome="${jde.home}" codfile="output/tocod/${codename}.cod" /> -->
        <java jar="${blackberry.certificate.dir}/SignatureTool.jar" fork="true" dir="${output.cod}" failonerror="true">
            <arg line=" -a -p KUZ93HQ1 -c -s ${codename}.cod" />
        </java>
    </target>

    <!-- Load to device depends="sign" -->
    <target name="load">
        <echo message="=== Load ===" />
        <exec executable="${bb.buildjars.home}/JavaLoader.exe" dir="." failonerror="true">
            <arg value="-u" />
            <arg value="load" />
            <arg value="${output.cod}/${codename}.cod" />
        </exec>
    </target>
</project>