build-common.xml 6.31 KiB
<project name="build-common" basedir="..">
<import file="build-basic.xml" />
<property name="lib" value="../libraries" />
<taskdef name="build-info"
classname="ch.systemsx.cisd.ant.task.subversion.GatherRevisionAndVersionTask"
classpathref="build-resource.path" />
<taskdef name="build-java-subprojects"
classname="ch.systemsx.cisd.ant.task.subprojectbuilder.BuildJavaSubprojectsTask"
classpathref="build-resource.path" />
<taskdef name="project-classpath"
classname="ch.systemsx.cisd.ant.task.SetEclipseClasspathTask"
classpathref="build-resource.path" />
<typedef name="recursive-jar"
classname="ch.systemsx.cisd.ant.task.RecursiveJar"
classpathref="build-resource.path" />
<taskdef resource="testngtasks" classpath="../libraries/testng/testng-jdk15.jar" />
<taskdef name="dependency-checker"
classname="classycle.ant.DependencyCheckingTask"
classpath="${lib}/classycle/classycle.jar" />
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" />
<property name="server-resource" value="${resource}/server" />
<property name="sources" value="source/java" />
<property name="sources.test" value="sourceTest/java" />
<property name="classes" value="${targets}/ant/classes" />
<property name="output.test" value="${targets}/test-output" />
<property name="build.info.filename" value="BUILD-${ant.project.name}.INFO" />
<property name="build.info.file" value="${classes}/${build.info.filename}" />
<!-- The name of the file containing checksums for all properties files -->
<property name="checksum.file.name" value="configuration.MD5" />
<property name="checksum.file" value="${dist}/${checksum.file.name}" />
<!--
// Dummy target used by cruisecontrol
-->
<target name="_dummy" description="Dummy target used by cruisecontrol" />
<target name="prepare">
<delete dir="${classes}" />
<mkdir dir="${classes}" />
</target>
<target name="compile" unless="compile.bypass">
<build-java-subprojects target="_plain-compile-sources"/>
<antcall target="_plain-compile-sources" />
</target>
<target name="compile-tests" depends="compile">
<build-java-subprojects target="_plain-compile-tests"/>
<antcall target="_plain-compile-tests" />
</target>
<target name="check-dependencies" depends="compile">
<antcall target="check-dependencies-no-compile" />
</target>
<target name="check-dependencies-no-compile">
<dependency-checker definitionFile="resource/dependency-structure.ddf"
failOnUnwantedDependencies="true"
mergeInnerClasses="true">
<fileset dir="${classes}">
<include name="**/*.class" />
</fileset>
</dependency-checker>
</target>
<target name="_plain-compile-sources" depends="prepare">
<antcall target="_plain-compile">
<param name="src" value="${sources}" />
</antcall>
</target>
<target name="_plain-compile-tests">
<antcall target="_plain-compile">
<param name="src" value="${sources.test}" />
</antcall>
</target>
<!--
// Compile Java classes using the Eclipse compiler
// Note: THIS IS A PRIVATE TARGET. It isn't intended to be used in other build scripts.
// Parameter: src = source folder
-->
<target name="_plain-compile">
<echo level="info">Compile all classes in ${basedir}/${src} and subfolders</echo>
<javac srcdir="${src}"
destdir="${classes}"
classpath="${ecp}"
source="1.6"
target="1.6"
encoding="UTF-8"
debug="true">
<compilerarg line="-warn:none" />
</javac>
<copy todir="${classes}">
<fileset dir="${src}">
<include name="**/*.xml" />
<include name="**/*.xsd" />
<include name="**/*.properties" />
<include name="**/*.jpg" />
<include name="**/*.png" />
<include name="**/*.gif" />
</fileset>
</copy>
</target>
<!--
// Runs a TestNG test suite
// Parameter: test.suite = path of test suite relative to the test source folder
-->
<target name="_run-testng">
<testng classpath="${ecp}"
workingDir="."
outputdir="${output.test}"
failureproperty="${failure.property}">
<xmlfileset dir="${sources.test}" includes="${test.suite}" />
<jvmarg value="-Xmx1024M" />
<jvmarg value="-XX:MaxPermSize=512m" />
</testng>
</target>
<target name="run-tests" depends="compile-tests">
<delete dir="${output.test}" />
<antcall target="_run-testng">
<param name="test.suite" value="${test.suite}" />
<param name="failure.property" value="tests.failed" />
</antcall>
<junitreport todir="${output.test}">
<fileset dir="${output.test}">
<include name="*/*.xml" />
</fileset>
<report format="noframes" todir="${output.test}" />
</junitreport>
<fail if="tests.failed" message="At least one test failed." />
</target>
<target name="ci">
<antcall target="run-tests">
<param name="test.suite" value="tests.xml" />
</antcall>
<antcall target="check-restrictions" />
</target>
<!--
1. Compiles productive and test code
2. Checks restrictions (@Friend-@Private annotations)
3. Checks dependencies (defined in /dependency-structure.ddf)
-->
<target name="compile-and-check" depends="check-restrictions, check-dependencies"/>
<target name="check-restrictions" depends="compile, compile-tests">
<exec executable="sh" failonerror="true">
<arg value="../libraries/restrictionchecker/jrc" />
<arg value="-r" />
<arg value="../${mainfolder}/${classes}" />
<!--arg value="-jd" />
<arg value="../libraries" /-->
<arg value="-cp" />
<arg value="${ecp}" />
</exec>
</target>
<!-- = = = = = = = = = = = = = = = = =
macrodef: concat-checksums
Take checksum files located in the ${dist} directory, concatenate
them into one file and delete the individual files.
= = = = = = = = = = = = = = = = = -->
<macrodef name="concat-checksums">
<sequential>
<concat destfile="${checksum.file}">
<!-- If a configuration.MD5 file is already in the directory, ignore it -->
<fileset dir="${dist}" excludes="${checksum.file.name}">
<include name="**/*.MD5"/>
</fileset>
</concat>
<delete>
<fileset dir="${dist}" excludes="${checksum.file.name}">
<include name="**/*.MD5"/>
</fileset>
</delete>
</sequential>
</macrodef>
</project>