| <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| <!-- |
| Copyright (c) 2012 Original authors and others. |
| All rights reserved. This program and the accompanying materials |
| are made available under the terms of the Eclipse Public License v1.0 |
| which accompanies this distribution, and is available at |
| http://www.eclipse.org/legal/epl-v10.html |
| |
| Contributors: |
| Original authors and others - initial API and implementation |
| --> |
| |
| <!-- |
| Common set of Ant tasks |
| These taks are invoked once for each module, via subant call |
| --> |
| <project basedir="." default="build" name="nattable"> |
| <tstamp /> |
| |
| <property name="datetime.stamp" value="${DSTAMP}${TSTAMP}" /> |
| |
| <property environment="env" /> |
| |
| <!-- Look in the user home for the clipse install. You can override by |
| using -DECLIPSE_HOME="xxx" on the command line --> |
| <property name="ECLIPSE_HOME" value="${user.home}/eclipse_rcp_3_5" /> |
| <property name="debuglevel" value="source,lines,vars" /> |
| <property name="target" value="1.5" /> |
| <property name="source" value="1.5" /> |
| <property name="version" value="2.0.0" /> |
| |
| <!-- src and binaries --> |
| <property name="src.dir" value="src" /> |
| <property name="build.tools.dir" value="../deps/tools" /> |
| <property name="target.dir" value="target" /> |
| |
| <!-- Class files go here --> |
| <property name="build.dir" value="${target.dir}/bin" /> |
| |
| <!-- Jars go here --> |
| <property name="dist.dir" value="${target.dir}/dist" /> |
| <property name="emma.metadata.dir" location="${target.dir}/emma/metadata" /> |
| |
| <!-- Junit test reports --> |
| <property name="junit.reports.dir" value="${target.dir}/reports/junit" /> |
| |
| <!-- Findbugs reports --> |
| <property name="findbugs.report.dir" value="${target.dir}/reports/findbugs" /> |
| |
| |
| <!-- Eclipse deps linked off an eclipse RCP install --> |
| <filelist id="eclipse.lib" dir="${ECLIPSE_HOME}/plugins"> |
| <file name="org.apache.commons.lang_2.3.0.v200803061910.jar" /> |
| <file name="org.apache.commons.logging_1.0.4.v200904062259.jar" /> |
| <file name="org.eclipse.core.commands_3.5.0.I20090525-2000.jar" /> |
| <file name="org.eclipse.core.runtime_3.5.0.v20090525.jar" /> |
| <file name="org.eclipse.equinox.common_3.5.0.v20090520-1800.jar" /> |
| <file name="org.eclipse.equinox.registry_3.4.100.v20090520-1800.jar" /> |
| <file name="org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/runtime_registry_compatibility.jar" /> |
| <file name="org.eclipse.jface_3.5.0.I20090525-2000.jar" /> |
| <file name="org.eclipse.equinox.common_3.5.0.v20090520-1800.jar" /> |
| <file name="org.eclipse.equinox.registry_3.4.100.v20090520-1800.jar" /> |
| <file name="org.eclipse.osgi_3.5.0.v20090520.jar" /> |
| <file name="org.hamcrest.core_1.1.0.v20090501071000.jar" /> |
| <file name="org.junit4_4.5.0.v20090423/junit.jar" /> |
| <!-- SWT jar names are platform dependent --> |
| <file name="org.eclipse.swt_3.5.0.v3550b.jar" /> |
| </filelist> |
| |
| <!-- SWT libs, pick up the available SWT jar depending on the platform --> |
| <filelist id="swt.lib" dir="${ECLIPSE_HOME}/plugins"> |
| <file name="org.eclipse.swt.gtk.linux.x86_3.5.0.v3550b.jar"/> |
| <file name="org.eclipse.swt.win32.win32.x86_3.5.0.v3550b.jar"/> |
| </filelist> |
| |
| <!-- Glazed lists --> |
| <filelist id="glazedlists.lib" dir="../deps/plugins"> |
| <file name="glazedlists_java15-1.8.0.jar"/> |
| </filelist> |
| |
| <!-- Setup Emma (code coverage) --> |
| <path id="emma.lib"> |
| <pathelement location="${build.tools.dir}/emma.jar" /> |
| <pathelement location="${build.tools.dir}/emma_ant.jar" /> |
| </path> |
| <taskdef resource="emma_ant.properties" classpathref="emma.lib" /> |
| |
| <!-- Setup findbugs (static analysis) --> |
| <property name="FINDBUGS_HOME" value="${user.home}/findbugs-1.3.9" /> |
| <path id="findbugs.lib" location="${FINDBUGS_HOME}/lib/findbugs-ant.jar" /> |
| <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" classpathref="findbugs.lib"/> |
| |
| <path id="build.classpath"> |
| <filelist refid="eclipse.lib" /> |
| <filelist refid="swt.lib" /> |
| <filelist refid="glazedlists.lib" /> |
| <path refid="emma.lib" /> |
| <path refid="build.dependencies" /> |
| </path> |
| |
| <target name="init" description="Create dirs and copy source"> |
| <mkdir dir="${build.dir}" /> |
| <mkdir dir="${dist.dir}" /> |
| |
| <copy includeemptydirs="false" todir="${build.dir}"> |
| <fileset dir="${src.dir}"> |
| <exclude name="**/*.launch" /> |
| </fileset> |
| </copy> |
| </target> |
| |
| <!-- Clean --> |
| <target name="clean"> |
| <echo message="Eclipse home: ${ECLIPSE_HOME}" /> |
| <echo message="Findbugs home: ${FINDBUGS_HOME}" /> |
| <delete dir="${target.dir}" /> |
| </target> |
| |
| <!-- |
| Build |
| At the conclusion of the build the jars are generated and the class files |
| are instrumented for recording coverage |
| --> |
| <target name="build" depends="init" description="Compile all sources for the module"> |
| <echo message="Building ${basedir}/${src.dir}" /> |
| |
| <javac fork="true" memoryInitialSize="128m" memoryMaximumSize="512m" debug="true" verbose="false" |
| debuglevel="${debuglevel}" destdir="${build.dir}" srcdir="${src.dir}" |
| source="${source}" target="${target}"> |
| <src path="${src.dir}" /> |
| <classpath> |
| <path refid="build.classpath" /> |
| <pathelement location="${build.dir}" /> |
| </classpath> |
| </javac> |
| |
| <!-- |
| Build Jars and insrument for code coverage |
| Emma instruments the classfiles in place. Hence the jar need to be |
| build before the code is instrumented |
| --> |
| <antcall> |
| <target name="jar" /> |
| <target name="srcjar" /> |
| </antcall> |
| </target> |
| |
| <!-- Jar --> |
| <target name="jar"> |
| <echo message="Creating jar in ${dist.dir}" /> |
| <jar jarfile="${dist.dir}/${jar.file.prefix}_${version}.${datetime.stamp}.jar" manifest="${basedir}/META-INF/MANIFEST.MF"> |
| <fileset dir="${build.dir}"> |
| <exclude name="**/*.java" /> |
| </fileset> |
| <manifest> |
| <attribute name="Build-date" value="${datetime.stamp}"/> |
| </manifest> |
| </jar> |
| </target> |
| |
| <!-- Source Jar --> |
| <target name="srcjar" unless="no.source.jar"> |
| <echo message="Creating source jar in ${dist.dir}" /> |
| <jar jarfile="${dist.dir}/${jar.file.prefix}.source_${version}.${datetime.stamp}.jar" manifest="${basedir}/META-INF/MANIFEST.MF"> |
| <fileset dir="${build.dir}"/> |
| <manifest> |
| <attribute name="Build-date" value="${datetime.stamp}"/> |
| </manifest> |
| </jar> |
| </target> |
| |
| <!-- Junit Test --> |
| <target name="test"> |
| <echo message="Instrumenting code in ${basedir}" /> |
| <antcall target="emma.instrument" /> |
| |
| <echo message="Running tests in ${basedir}" /> |
| <mkdir dir="${emma.metadata.dir}" /> |
| <mkdir dir="${junit.reports.dir}" /> |
| <junit printsummary="yes" haltonerror="no" showoutput="true" fork="true"> |
| <classpath> |
| <path refid="build.classpath" /> |
| <pathelement location="${build.dir}" /> |
| </classpath> |
| |
| <!-- Plug in emma code coverage --> |
| <jvmarg value="-Demma.coverage.out.file=${emma.metadata.dir}/coverage.emma" /> |
| <jvmarg value="-Demma.coverage.out.merge=true" /> |
| <jvmarg value="-Dosgi.bundlefile.limit=100"/> |
| |
| <formatter type="xml" /> |
| |
| <batchtest todir="${junit.reports.dir}"> |
| <fileset dir="${build.dir}" includes="**/*Test.class" /> |
| </batchtest> |
| </junit> |
| |
| <!-- Create pretty report(s) --> |
| <antcall target="junit.report"/> |
| <antcall target="findbugs" /> |
| </target> |
| |
| <!-- |
| Emma. Instrument the code for coverage analysis |
| Test files are not instrumented. This is truned off by setting the do.not.instrument |
| property in the test projects |
| --> |
| <target name="emma.instrument" unless="do.not.instrument"> |
| <emma enabled="true"> |
| <!-- Modifies the class files in place --> |
| <instr metadatafile="${emma.metadata.dir}/metadata.emma" |
| merge="true" mode="overwrite"> |
| <instrpath> |
| <pathelement location="${build.dir}" /> |
| </instrpath> |
| <!-- exclude UI classes --> |
| <filter includes="org.eclipse.nebula.widgets.*" excludes="**/*Dialog.class" /> |
| </instr> |
| </emma> |
| </target> |
| |
| <!-- |
| Find Bugs |
| Assumes that the jar has been built and is available in the ${dist.dir} |
| --> |
| <target name="findbugs" unless="do.not.findbugs"> |
| <echo message="Findbugs home: ${FINDBUGS_HOME}"/> |
| <mkdir dir="${findbugs.report.dir}"/> |
| <findbugs home="${FINDBUGS_HOME}/lib" output="xml" outputFile="${findbugs.report.dir}/findbugs-output.xml" |
| jvmargs="-Xmx256m"> |
| <class location="${dist.dir}" /> |
| <auxClasspath refid="build.classpath"/> |
| <sourcePath path="${src.dir}" /> |
| </findbugs> |
| </target> |
| |
| <!-- JUnit report --> |
| <target name="junit.report"> |
| <junitreport todir="${junit.reports.dir}"> |
| <fileset dir="${junit.reports.dir}"> |
| <include name="TEST-*.xml" /> |
| </fileset> |
| <report format="frames" todir="${junit.reports.dir}/html" /> |
| </junitreport> |
| </target> |
| |
| </project> |