| <?xml version="1.0" encoding="UTF-8"?> |
| |
| <!-- |
| 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 name="gora" default="publish-local-all" |
| xmlns:ivy="antlib:org.apache.ivy.ant"> |
| |
| <property name="year" value="2011" /> |
| <property name="project.dir" value="${basedir}"/> |
| <property name="version" value="0.2-incubating" /> |
| <property name="final.name" value="${ant.project.name}-${version}" /> |
| |
| <property name="dist.base.dir" value="${basedir}/dist"/> |
| <property name="dist.dir" value="${dist.base.dir}/${final.name}"/> |
| |
| <property name="build.dir" value="${basedir}/build" /> |
| <property name="docs.dir" value="${basedir}/docs" /> |
| <property name="build.docs" value="${build.dir}/docs" /> |
| <property name="build.javadoc" value="${build.docs}/api/" /> |
| <property name="javadoc.link.java" value="http://java.sun.com/javase/6/docs/api/" /> |
| <property name="javadoc.link.hadoop" value="http://hadoop.apache.org/common/docs/r0.20.2/api/" /> |
| <property name="javadoc.link.avro" value="http://avro.apache.org/docs/1.3.3/api/java/" /> |
| <property name="build.javadoc.timestamp" value="${build.javadoc}/index.html" /> |
| |
| <!-- module directories --> |
| <property name="src.dir" value="src/main/java" /> |
| <property name="conf.dir" value="conf" /> |
| <property name="lib.dir" value="lib" /> |
| <property name="lib-ext.dir" value="lib-ext" /> |
| <property name="build.classes.dir" value="build/classes" /> |
| |
| |
| <!-- Load all the default properties, and any the user wants --> |
| <!-- to contribute (without having to type -D or edit this file --> |
| <property file="${user.home}/build.properties" /> |
| <property file="${basedir}/build.properties" /> |
| <property file="${basedir}/default.properties" /> |
| |
| <!-- setup ivy default configuration with some custom info --> |
| <property name="ivy.file" value="ivy.xml" /> |
| <property name="ivy.version" value="2.1.0" /> |
| <property name="ivy.dir" value="${basedir}/ivy" /> |
| <property name="project.ivy.dir" value="${project.dir}/ivy" /> |
| <property name="ivy.jar" location="${project.ivy.dir}/ivy-${ivy.version}.jar" /> |
| <property name="ivy.repo.url" value="http://repo2.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar" /> |
| |
| <property name="ivy.local.default.root" value="${ivy.default.ivy.user.dir}/local" /> |
| <property name="ivy.local.default.ivy.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" /> |
| <property name="ivy.local.default.artifact.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" /> |
| |
| <property name="ivy.shared.default.root" value="${ivy.default.ivy.user.dir}/shared" /> |
| <property name="ivy.shared.default.ivy.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" /> |
| <property name="ivy.shared.default.artifact.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" /> |
| |
| <!-- target: init ================================================ --> |
| <target name="init" depends="ivy-init"> |
| <chmod dir="bin" perm="ugo+rx" includes="*.sh, gora"/> |
| </target> |
| |
| <!-- target: -buildlist ================================================ --> |
| <target name="-buildlist" depends="init"> |
| <ivy:buildlist reference="build-path" ivyfilepath="ivy/${ivy.file}"> |
| <fileset dir="." includes="*/build.xml" excludes="build.xml"/> |
| </ivy:buildlist> |
| </target> |
| |
| <target name="compile" depends="-buildlist"> |
| <subant target="compile" buildpathref="build-path" /> |
| </target> |
| |
| <target name="jar" depends="-buildlist"> |
| <subant target="jar" buildpathref="build-path" /> |
| </target> |
| |
| <target name="jar-snapshot" depends="-buildlist, jar" description="copies the jar files to append timestamp to artifact name"> |
| <subant target="jar-snapshot" buildpathref="build-path" /> |
| </target> |
| |
| <target name="compile-test" depends="publish-local-all-test"> |
| </target> |
| |
| <target name="test-jar" depends="publish-local-all-test"/> |
| |
| <target name="test-jar-snapshot" depends="test-jar" description="copies the jar files to append timestamp to artifact name"> |
| <subant target="test-jar-snapshot" buildpathref="build-path" /> |
| </target> |
| |
| <target name="test" depends="publish-local-all-test"> |
| <subant target="test" buildpathref="build-path" /> |
| </target> |
| |
| <target name="nightly" depends="test, tar" /> |
| |
| <!-- ================================================================== --> |
| <!-- Documentation --> |
| <!-- ================================================================== --> |
| |
| <path id="classpath"> |
| <dirset dir="."> |
| <include name="*/${build.classes.dir}"/> |
| <include name="*/${conf.dir}"/> |
| </dirset> |
| |
| <fileset dir="."> |
| <include name="**/*.jar" /> |
| </fileset> |
| </path> |
| |
| <target name="javadoc-uptodate" depends="compile"> |
| <uptodate property="javadoc.is.uptodate"> |
| <srcfiles dir="${project.dir}/gora-core/${src.dir}"> |
| <include name="**/*.java" /> |
| <include name="**/*.html" /> |
| </srcfiles> |
| <mapper type="merge" to="${build.javadoc.timestamp}" /> |
| </uptodate> |
| </target> |
| |
| <target name="javadoc" description="Generate javadoc" depends="javadoc-uptodate" |
| unless="javadoc.is.uptodate"> |
| <mkdir dir="${build.javadoc}"/> |
| <javadoc |
| overview="gora-core/${src.dir}/overview.html" |
| destdir="${build.javadoc}" |
| author="true" |
| version="true" |
| use="true" |
| windowtitle="Apache Gora API" |
| doctitle="Apache Gora API" |
| bottom="Copyright &copy; ${year} The Apache Software Foundation"> |
| |
| <packageset dir="gora-core/src/main/java"/> |
| <packageset dir="gora-cassandra/src/main/java"/> |
| <packageset dir="gora-hbase/src/main/java"/> |
| <packageset dir="gora-sql/src/main/java"/> |
| |
| <link href="${javadoc.link.java}"/> |
| <link href="${javadoc.link.avro}"/> |
| <link href="${javadoc.link.hadoop}"/> |
| |
| <classpath refid="classpath"/> |
| |
| <group title="Core" packages="org.apache.gora.*"/> |
| <group title="Cassandra Module" packages="org.apache.gora.cassandra.*"/> |
| <group title="HBase Module" packages="org.apache.gora.hbase.*"/> |
| <group title="Sql Module" packages="org.apache.gora.sql.*"/> |
| |
| </javadoc> |
| </target> |
| |
| <target name="docs" depends="forrest.check, javadoc" description="Generate forrest-based documentation. To use, specify -Dforrest.home=<base of Apache Forrest installation> on the command line." if="forrest.home"> |
| <exec dir="${docs.dir}" executable="${forrest.home}/bin/forrest" failonerror="true"> |
| <arg value="-Dforrest.validate.xdocs.failonerror=false"/> |
| <arg value="-Dproject.build-dir=${build.docs}"/> |
| </exec> |
| |
| <copy todir="${build.docs}/site/api/" includeEmptyDirs="false"> |
| <fileset dir="${build.javadoc}"/> |
| </copy> |
| |
| </target> |
| |
| <target name="forrest.check" unless="forrest.home"> |
| <fail message="'forrest.home' is not defined. Please pass -Dforrest.home=<base of Apache Forrest installation> to Ant on the command-line." /> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Distribution --> |
| <!-- ================================================================== --> |
| <target name="package" depends="-buildlist, test-jar" |
| description="Build distribution"> |
| |
| <subant target="package" buildpathref="build-path" /> |
| |
| <mkdir dir="${dist.dir}"/> |
| <mkdir dir="${dist.dir}/bin"/> |
| <mkdir dir="${dist.dir}/docs"/> |
| <mkdir dir="${dist.dir}/docs/api"/> |
| |
| <copy todir="${dist.dir}/bin"> |
| <fileset dir="bin"/> |
| </copy> |
| |
| <copy todir="${dist.dir}/conf"> |
| <fileset dir="${conf.dir}" excludes="**/*.template"/> |
| </copy> |
| |
| <copy todir="${dist.dir}/ivy"> |
| <fileset dir="ivy"> |
| <exclude name="ivy*.jar"/> |
| </fileset> |
| </copy> |
| |
| <copy todir="${dist.dir}"> |
| <fileset dir="."> |
| <include name="*.txt" /> |
| <include name="*.xml" /> |
| </fileset> |
| </copy> |
| |
| <copy todir="${dist.dir}/docs"> |
| <fileset dir="${build.docs}/site"/> |
| </copy> |
| |
| <chmod perm="ugo+x" type="file" parallel="false"> |
| <fileset dir="${dist.dir}/bin"/> |
| </chmod> |
| |
| <!-- modules --> |
| <copy todir="${dist.dir}/gora-core"> |
| <fileset dir="gora-core/build/gora-core"/> |
| </copy> |
| <copy todir="${dist.dir}/gora-cassandra"> |
| <fileset dir="gora-cassandra/build/gora-cassandra"/> |
| </copy> |
| <copy todir="${dist.dir}/gora-hbase"> |
| <fileset dir="gora-hbase/build/gora-hbase"/> |
| </copy> |
| <copy todir="${dist.dir}/gora-sql"> |
| <fileset dir="gora-sql/build/gora-sql"/> |
| </copy> |
| </target> |
| |
| <macrodef name="macro_tar" description="Worker Macro for tar"> |
| <attribute name="param.destfile"/> |
| <element name="param.listofitems"/> |
| <sequential> |
| <tar compression="gzip" longfile="gnu" |
| destfile="@{param.destfile}"> |
| <param.listofitems/> |
| </tar> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="macro_zip" description="Worker Macro for zip"> |
| <attribute name="param.destfile"/> |
| <element name="param.listofitems"/> |
| <sequential> |
| <zip destfile="@{param.destfile}"> |
| <param.listofitems/> |
| </zip> |
| </sequential> |
| </macrodef> |
| |
| <!-- ================================================================== --> |
| <!-- Make release tarball --> |
| <!-- ================================================================== --> |
| <target name="tar" depends="docs, package" description="Make release tarball"> |
| <macro_tar param.destfile="${dist.base.dir}/${final.name}.tar.gz"> |
| <param.listofitems> |
| <tarfileset dir="${dist.base.dir}" mode="664"> |
| <exclude name="${final.name}/bin/*" /> |
| <include name="${final.name}/**" /> |
| </tarfileset> |
| <tarfileset dir="${dist.base.dir}" mode="755"> |
| <include name="${final.name}/bin/*" /> |
| </tarfileset> |
| </param.listofitems> |
| </macro_tar> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Make release zipball --> |
| <!-- ================================================================== --> |
| <target name="zip" depends="package" description="Make release zipball"> |
| <macro_zip param.destfile="${dist.base.dir}/${final.name}.zip"> |
| <param.listofitems> |
| <zipfileset dir="${dist.base.dir}"> |
| <exclude name="${final.name}/bin/*" /> |
| <include name="${final.name}/**" /> |
| </zipfileset> |
| <zipfileset dir="${dist.base.dir}"> |
| <include name="${final.name}/bin/*" /> |
| </zipfileset> |
| </param.listofitems> |
| </macro_zip> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Publish Targets --> |
| <!-- ================================================================== --> |
| |
| <!-- target: publish-local-all ========================================== --> |
| <target name="publish-local-all" depends="-buildlist" |
| description="publish the projects to local ivy repo"> |
| <subant target="publish-local" buildpathref="build-path" /> |
| </target> |
| |
| <!-- target: publish-local-all-test ===================================== --> |
| <target name="publish-local-all-test" depends="-buildlist" |
| description="publish the projects test jars to local ivy repo"> |
| <subant target="publish-local-test" buildpathref="build-path" /> |
| </target> |
| |
| <!-- target: publish-all ================================================ --> |
| <target name="publish-all" depends="-buildlist" |
| description="compile, jar and publish all projects in the right order"> |
| <subant target="publish" buildpathref="build-path" /> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Clean Targets --> |
| <!-- ================================================================== --> |
| |
| <!-- target: clean-all ================================================ --> |
| <target name="clean-all" depends="-buildlist" description="clean all projects"> |
| <subant target="clean" buildpathref="build-path" /> |
| </target> |
| |
| <!-- target: clean ================================================ --> |
| <target name="clean" depends="clean-all" |
| description="clean all projects"> |
| <delete includeemptydirs="true" dir="${dist.base.dir}"/> |
| <delete includeemptydirs="true" dir="${build.dir}"/> |
| </target> |
| |
| <!-- target: clean-cache ================================================ --> |
| <target name="clean-cache" depends="ivy-init" |
| description="delete ivy cache"> |
| <ivy:cleancache /> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- target: clean-docs --> |
| <!-- ================================================================== --> |
| <target name="clean-docs"> |
| <delete dir="${build.docs}"/> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Ivy Targets --> |
| <!-- ================================================================== --> |
| |
| <!-- target: ivy-init ================================================ --> |
| <target name="ivy-init" depends="ivy-probe-antlib, ivy-init-antlib"> |
| <ivy:settings file="${project.ivy.dir}/ivysettings.xml" /> |
| </target> |
| |
| <!-- target: ivy-probe-antlib ======================================== --> |
| <target name="ivy-probe-antlib"> |
| <condition property="ivy.found"> |
| <typefound uri="antlib:org.apache.ivy.ant" name="cleancache" /> |
| </condition> |
| </target> |
| |
| <!-- target: ivy-download ============================================ --> |
| <target name="ivy-download" description="Download ivy"> |
| <available file="${ivy.jar}" property="ivy.jar.found"/> |
| <antcall target="-ivy-download-unchecked"/> |
| </target> |
| |
| <!-- target: ivy-download-unchecked ================================== --> |
| <target name="-ivy-download-unchecked" unless="ivy.jar.found"> |
| <get src="${ivy.repo.url}" dest="${ivy.jar}" usetimestamp="true" /> |
| </target> |
| |
| <!-- target: ivy-init-antlib ========================================= --> |
| <target name="ivy-init-antlib" depends="ivy-download" unless="ivy.found"> |
| <typedef uri="antlib:org.apache.ivy.ant" onerror="fail" loaderRef="ivyLoader"> |
| <classpath> |
| <pathelement location="${ivy.jar}" /> |
| </classpath> |
| </typedef> |
| <fail> |
| <condition> |
| <not> |
| <typefound uri="antlib:org.apache.ivy.ant" name="cleancache" /> |
| </not> |
| </condition> |
| You need Apache Ivy 2.0 or later from http://ant.apache.org/ |
| It could not be loaded from ${ivy.repo.url} |
| </fail> |
| </target> |
| |
| </project> |