| <?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 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.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.3.0"/>
|
| <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>
|
|
|
| <!--
|
| This generates the CQL grammar files from Cql.g
|
| -->
|
| <target name="check-gen-cql-grammar">
|
| <uptodate property="cqlUpToDate"
|
| srcfile="${build.src}/org/apache/cassandra/cql/compiler/parse/Cql.g"
|
| targetfile="${build.src.gen-java}/org/apache/cassandra/cql/compiler/parse/Cql.tokens"/>
|
| </target>
|
|
|
| <target name="gen-cql-grammar" depends="check-gen-cql-grammar" unless="cqlUpToDate">
|
| <echo>Building Grammar ${build.src}/org/apache/cassandra/cql/compiler/parse/Cql.g ....</echo>
|
| <java classname="org.antlr.Tool"
|
| classpath="${build.lib}/antlr-3.1.3.jar"
|
| fork="true">
|
| <arg value="${build.src}/org/apache/cassandra/cql/compiler/parse/Cql.g" />
|
| <arg value="-fo" />
|
| <arg value="${build.src.gen-java}/org/apache/cassandra/cql/compiler/parse/" />
|
| </java>
|
| </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,gen-cql-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">
|
| <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="Facebook"/>
|
| <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">
|
|
|
| <tarfileset dir="${dist.dir}"
|
| prefix="${final.name}">
|
| <include name="**"/>
|
| <exclude name="bin/cassandra" />
|
| </tarfileset>
|
| <tarfileset dir="${dist.dir}"
|
| prefix="${final.name}"
|
| mode="755">
|
| <include name="bin/cassandra"/>
|
| </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/**" />
|
| </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>
|
| </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>
|
| </javadoc>
|
| </target>
|
|
|
| </project>
|