| <?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-incubating"> |
| <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.0-rc3"/> |
| <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> |