Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: update build script

...

Code Block
xml
xml
<?xml version="1.0"?>
<project name="sample" default="jarcoverage-report" basedir=".">
  <!-- properties for project directory structure -->
  <property name="dir.src" value="src."/>
  <property name="dir.build" value="build"/>
  <property name="dir.dist" value="dist"/>
  <property name="dir.lib" value="lib"/>
  <property name="dir.report" value="report"/>

  <!-- setup a project classpath that includes the external libs -->\
  <path id="project.classpath">
    <!-- include the classes in this project -->
    <pathelement location="${dir.build}"/>
    <!-- include external libraries -->
    <fileset dir="${dir.lib}" includes="**/*.jar"/>
  </path>

  <!-- add external tasks -->
  <taskdef name="groovyc"  classpathref="project.classpath" classname="org.codehaus.groovy.ant.Groovyc"/>
  <taskdef name="groovy" classpathref="project.classpath" classname="org.codehaus.groovy.ant.Groovy"/>

  <!-- create output directories -->
  <target name="prepare" depends="clean">
    <mkdir dir="${dir.build}"/>
  </target>

  <!-- clean -->
  <target name="clean" description="Remove all generated files.">
    <delete dir="${dir.build}"/>
    <delete dir="${dir.report}"/>
    <delete dir="target/instrumented-classes"/>
	<delete file="cobertura.ser"/>
  </target>

  <!-- compile java (if you have any) and groovy source -->
  <target name="runGroovyC" depends="prepare,copyResourceFiles">
    <javac srcdir="${dir.src}" destdir="${dir.build}">
      <classpath refid="project.classpath"/>
    </javac>
    <groovyc srcdir="${dir.src}" destdir="${dir.build}" stacktrace="true">
      <classpath refid="project.classpath"/>
    </groovyc>

    <!-- work around if groovyc tasks doesn't work right
      <java classname="org.codehaus.groovy.ant.Groovyc" fork="yes" maxmemory="${maxmemory}">
        <classpath refid="project.classpath"		<javac debug="on" />
        <arg value="${dir.build}"/>
        <arg value="${dir.src}"/>
      </java></groovyc>

   -->
  </target>

  <!--============================================-->
  <!-- Cobertura Test Coverage Tool -->
  <!--============================================-->
  <path id="cobertura.classpath">
    <fileset dir="${dir.lib}/cobertura" includes="**/*.jar"/>
    <pathelement location="target/instrumented-classes"/>
    <pathelement location="${dir.src}"/>
  </path>

  <taskdef classpath="${dir.lib}/cobertura/cobertura.jar" resource="tasks.properties"
    classpathref="cobertura.classpath"/>

  <!-- adds the logging code to the already compiled class files -->
  <target name="instrument" depends="runGroovyC">
    <delete quiet="false" failonerror="false">
      <fileset dir="target/instrumented-classes" includes="**/*.class"/>
    </delete>
    <cobertura-instrument todir="target/instrumented-classes">
      <fileset dir="${dir.build}">
          <include name="**/*.class"/>
          <exclude name="**/*Test.class"/>
      </fileset>
    </cobertura-instrument>
  </target>

  <!-- setup class path to include instrumented classes before non-instrumented ones -->
  <path id="cover-test.classpath">
    <fileset dir="${dir.lib}" includes="**/*.jar"/>
    <pathelement location="target/instrumented-classes"/>
    <pathelement location="${dir.build}"/>
  </path>

  <!-- run all my junit tests using the instrumented classes -->
  <target name="cover-test" depends="instrument">
    <mkdir dir="${dir.report}/cobertura" />
    <junit printsummary="yes" haltonerror="no" haltonfailure="no" fork="yes">
      <formatter type="plain" usefile="falsetrue"/>
      <batchtest>
        <fileset dir="target/instrumented-classes${dir.build}" includes="**/*Test.class" />
      </batchtest>
      <classpath refid="cover-test.classpath"/>
    </junit>
  </target>

  <!-- create the html reports -->
  <target name="coverage-report" depends="cover-test">
    <cobertura-report srcdir="${dir.src}" destdir="cobertura${dir.report}"/>
  </target>
</project>

See also: Test Coverage