Build script for apache-cassandra-0.5.1-src
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- ~ Licensed to the Apache Software Foundation (ASF) under one ~ or more contributor license agreements. See the NOTICE file ~ distributed with this work for additional information ~ regarding copyright ownership. The ASF licenses this file ~ to you under the Apache License, Version 2.0 (the ~ "License"); you may not use this file except in compliance ~ with the License. You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, ~ software distributed under the License is distributed on an ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ~ KIND, either express or implied. See the License for the ~ specific language governing permissions and limitations ~ under the License. --> <project basedir="." default="build" name="apache-cassandra"> <property environment="env"/> <property file="build.properties" /> <property name="debuglevel" value="source,lines,vars"/> <property name="basedir" value="."/> <property name="build.src" value="${basedir}/src/java"/> <property name="build.src.gen-java" value="${basedir}/src/gen-java"/> <property name="build.lib" value="${basedir}/lib"/> <property name="build.dir" value="${basedir}/build"/> <property name="build.test.dir" value="${build.dir}/test"/> <property name="build.classes" value="${build.dir}/classes"/> <property name="javadoc.dir" value="${build.dir}/javadoc"/> <property name="interface.dir" value="${basedir}/interface"/> <property name="interface.src.dir" value="${interface.dir}/gen-java"/> <property name="test.dir" value="${basedir}/test"/> <property name="test.resources" value="${test.dir}/resources"/> <property name="test.classes" value="${build.dir}/test/classes"/> <property name="test.conf" value="${test.dir}/conf"/> <property name="test.name" value="*Test"/> <property name="test.unit.src" value="${test.dir}/unit"/> <property name="dist.dir" value="${build.dir}/dist"/> <property name="version" value="0.5.1"/> <property name="final.name" value="${ant.project.name}-${version}"/> <!-- http://cobertura.sourceforge.net/ --> <property name="cobertura.build.dir" value="${build.dir}/cobertura"/> <!-- can't include due to licensing, specify jar via command line --> <property name="cobertura.dir" value="/tmp"/> <property name="cobertura.report.dir" value="${cobertura.build.dir}/report"/> <property name="cobertura.classes.dir" value="${cobertura.build.dir}/classes"/> <property name="cobertura.datafile" value="${cobertura.build.dir}/cobertura.ser"/> <!-- Add all the dependencies. --> <path id="cassandra.classpath"> <pathelement location="${cobertura.classes.dir}"/> <pathelement location="${build.classes}"/> <fileset dir="${build.lib}"> <include name="**/*.jar" /> </fileset> </path> <!-- Setup the output directories. --> <target name="init"> <mkdir dir="${build.classes}"/> <mkdir dir="${test.classes}"/> <mkdir dir="${build.src.gen-java}"/> </target> <target name="clean"> <delete dir="${build.dir}" /> <delete dir="${build.src.gen-java}" /> </target> <target depends="clean" name="cleanall"/> <!-- This generates the CLI grammar files from Cli.g --> <target name="check-gen-cli-grammar"> <uptodate property="cliUpToDate" srcfile="${build.src}/org/apache/cassandra/cli/Cli.g" targetfile="${build.src.gen-java}/org/apache/cassandra/cli/Cli.tokens"/> </target> <target name="gen-cli-grammar" depends="check-gen-cli-grammar" unless="cliUpToDate"> <echo>Building Grammar ${build.src}/org/apache/cassandra/cli/Cli.g ....</echo> <java classname="org.antlr.Tool" classpath="${build.lib}/antlr-3.1.3.jar" fork="true"> <arg value="${build.src}/org/apache/cassandra/cli/Cli.g" /> <arg value="-fo" /> <arg value="${build.src.gen-java}/org/apache/cassandra/cli/" /> </java> </target> <target name="gen-thrift-java"> <echo>Generating Thrift Java code from ${basedir}/interface/cassandra.thrift ....</echo> <exec executable="thrift" dir="${basedir}/interface"> <arg line="--gen java cassandra.thrift" /> </exec> </target> <target name="gen-thrift-py"> <echo>Generating Thrift Python code from ${basedir}/interface/cassandra.thrift ....</echo> <exec executable="thrift" dir="${basedir}/interface"> <arg line="--gen py cassandra.thrift" /> </exec> </target> <!-- The build target builds all the .class files --> <target name="build" depends="build-subprojects,build-project"/> <target name="build-subprojects"/> <target name="codecoverage" depends="cobertura-instrument,test,cobertura-report"/> <target depends="init,gen-cli-grammar" name="build-project"> <echo message="${ant.project.name}: ${ant.file}"/> <javac debug="true" debuglevel="${debuglevel}" destdir="${build.classes}"> <src path="${build.src}"/> <src path="${build.src.gen-java}"/> <src path="${interface.src.dir}"/> <classpath refid="cassandra.classpath"/> </javac> </target> <!-- The jar target makes cassandra.jar output. --> <target name="jar" depends="build"> <mkdir dir="${build.classes}/META-INF"/> <copy file="LICENSE.txt" tofile="${build.classes}/META-INF/LICENSE.txt"/> <copy file="NOTICE.txt" tofile="${build.classes}/META-INF/NOTICE.txt"/> <jar jarfile="${build.dir}/${final.name}.jar" basedir="${build.classes}"> <manifest> <!-- <section name="org/apache/cassandra/infrastructure"> --> <attribute name="Implementation-Title" value="Cassandra"/> <attribute name="Implementation-Version" value="${version}"/> <attribute name="Implementation-Vendor" value="Apache"/> <attribute name="Premain-Class" value="org.apache.cassandra.infrastructure.continuations.CAgent"/> <!-- </section> --> </manifest> </jar> </target> <!-- creates a release tarball --> <target name="release" depends="jar,javadoc"> <mkdir dir="${dist.dir}"/> <copy todir="${dist.dir}/lib"> <fileset dir="${build.lib}"/> <fileset dir="${build.dir}"> <include name="*.jar" /> </fileset> </copy> <copy todir="${dist.dir}/javadoc"> <fileset dir="${javadoc.dir}"/> </copy> <copy todir="${dist.dir}/bin"> <fileset dir="bin"/> </copy> <copy todir="${dist.dir}/conf"> <fileset dir="conf"/> </copy> <copy todir="${dist.dir}/interface"> <fileset dir="interface"> <include name="**/*.thrift" /> </fileset> </copy> <copy todir="${dist.dir}/"> <fileset dir="${basedir}"> <include name="*.txt" /> </fileset> </copy> <tar compression="gzip" longfile="gnu" destfile="${build.dir}/${final.name}-bin.tar.gz"> <!-- Everything but bin/ (default mode) --> <tarfileset dir="${dist.dir}" prefix="${final.name}"> <include name="**"/> <exclude name="bin/*" /> </tarfileset> <!-- Shell includes in bin/ (default mode) --> <tarfileset dir="${dist.dir}" prefix="${final.name}"> <include name="bin/*.in.sh" /> </tarfileset> <!-- Executable scripts in bin/ --> <tarfileset dir="${dist.dir}" prefix="${final.name}" mode="755"> <include name="bin/*"/> <not> <filename name="bin/*.in.sh" /> </not> </tarfileset> </tar> <tar compression="gzip" longfile="gnu" destfile="${build.dir}/${final.name}-src.tar.gz"> <tarfileset dir="${basedir}" prefix="${final.name}-src"> <include name="**"/> <exclude name="build/**" /> <exclude name="src/gen-java/**" /> </tarfileset> </tar> </target> <target name="build-test" depends="build" description="Build the Cassandra classes"> <javac debug="true" debuglevel="${debuglevel}" destdir="${test.classes}" > <classpath refid="cassandra.classpath"/> <src path="${test.unit.src}"/> </javac> <!-- Non-java resources needed by the test suite --> <copy todir="${test.classes}"> <fileset dir="${test.resources}"/> </copy> </target> <target name="test" depends="build-test"> <echo message="running tests"/> <mkdir dir="${build.test.dir}/cassandra"/> <mkdir dir="${build.test.dir}/output"/> <junit fork="on" failureproperty="testfailed"> <sysproperty key="net.sourceforge.cobertura.datafile" file="${cobertura.datafile}"/> <formatter type="xml" usefile="true"/> <formatter type="brief" usefile="false"/> <jvmarg value="-Dstorage-config=${test.conf}"/> <jvmarg value="-ea"/> <classpath> <path refid="cassandra.classpath" /> <pathelement location="${test.classes}"/> <pathelement location="${cobertura.dir}/cobertura.jar"/> <pathelement location="${test.conf}"/> </classpath> <batchtest todir="${build.test.dir}/output"> <fileset dir="${test.classes}" includes="**/${test.name}.class" /> </batchtest> </junit> <fail if="testfailed" message="Some test(s) failed."/> </target> <!-- instruments the classes to later create code coverage reports --> <target name="cobertura-instrument" depends="build,build-test"> <taskdef resource="tasks.properties"> <classpath> <fileset dir="${cobertura.dir}"> <include name="cobertura.jar" /> <include name="lib/**/*.jar" /> </fileset> </classpath> </taskdef> <delete file="${cobertura.datafile}"/> <cobertura-instrument todir="${cobertura.classes.dir}" datafile="${cobertura.datafile}"> <ignore regex="org.apache.log4j.*"/> <fileset dir="${build.classes}"> <include name="**/*.class"/> <exclude name="**/*Test.class"/> <exclude name="**/*TestCase.class"/> <exclude name="**/test/*.class"/> <exclude name="${cobertura.excludes}"/> </fileset> </cobertura-instrument> </target> <!-- create both html and xml code coverage reports --> <target name="cobertura-report"> <cobertura-report format="html" destdir="${cobertura.report.dir}" srcdir="${build.src}" datafile="${cobertura.datafile}"/> <cobertura-report format="xml" destdir="${cobertura.report.dir}" srcdir="${build.src}" datafile="${cobertura.datafile}"/> </target> <target name="javadoc" depends="init"> <tstamp> <format property="YEAR" pattern="yyyy"/> </tstamp> <javadoc destdir="${javadoc.dir}" author="true" version="true" use="true" windowtitle="${ant.project.name} API" classpathref="cassandra.classpath" bottom="Copyright &copy; ${YEAR} The Apache Software Foundation"> <fileset dir="${build.src}" defaultexcludes="yes"> <include name="org/apache/**/*.java"/> </fileset> <fileset dir="${interface.src.dir}" defaultexcludes="yes"> <include name="org/apache/**/*.java"/> </fileset> </javadoc> </target> </project>