| <?xml version="1.0"?> |
| |
| <!-- |
| 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="hcatalog" default="jar" |
| xmlns:artifact="artifact:org.apache.maven.artifact.ant"> |
| |
| <property name="path.to.basedir" location="${basedir}"/> |
| |
| <loadproperties srcfile="${basedir}/build.properties"/> |
| |
| <!-- |
| ================================================================================ |
| Properties and Classpaths Section |
| ================================================================================ |
| --> |
| |
| <condition property="staging"> |
| <equals arg1="${repo}" arg2="staging"/> |
| </condition> |
| |
| <!-- e2e test properties --> |
| <property name="test.e2e.dir" value="${basedir}/src/test/e2e/hcatalog"/> |
| |
| <!-- packaging properties --> |
| <property name="package.prefix" value="/usr"/> |
| <property name="package.conf.dir" value="/etc/hcatalog"/> |
| <property name="package.log.dir" value="/var/log/hcatalog"/> |
| <property name="package.pid.dir" value="/var/run/hcatalog"/> |
| <property name="package.var.dir" value="/var/lib/hcatalog"/> |
| <property name="package.share.dir" value="/share/hcatalog/${module}"/> |
| <property name="package.buildroot" value="${build.dir}/rpm/hcatalog_package_build_${user.name}"/> |
| <property name="package.build.dir" value="${build.dir}/rpm/hcatalog_package_build_${user.name}/BUILD"/> |
| |
| <target name="init"> |
| <mkdir dir="${dist.dir}"/> |
| </target> |
| |
| <!-- |
| ================================================================================ |
| Build all jars |
| ================================================================================ |
| --> |
| <target name="jar" depends="init" description="build all jars"> |
| <ant target="jar" dir="core" inheritAll="false"> |
| <property name="_mvn.hadoop.profile" value="${mvn.hadoop.profile}"/> |
| </ant> |
| <ant target="jar" dir="hcatalog-pig-adapter" inheritAll="false"> |
| <property name="_mvn.hadoop.profile" value="${mvn.hadoop.profile}"/> |
| </ant> |
| <ant target="jar" dir="server-extensions" inheritAll="false"> |
| <property name="_mvn.hadoop.profile" value="${mvn.hadoop.profile}"/> |
| </ant> |
| <ant target="jar" dir="webhcat/svr" inheritAll="false"> |
| <property name="_mvn.hadoop.profile" value="hadoop20"/> |
| </ant> |
| <ant target="jar" dir="webhcat/java-client" inheritAll="false"> |
| <property name="_mvn.hadoop.profile" value="${mvn.hadoop.profile}"/> |
| </ant> |
| <ant target="jar" dir="storage-handlers/hbase" inheritAll="false"> |
| <property name="_mvn.hadoop.profile" value="hadoop20"/> |
| </ant> |
| </target> |
| |
| <!-- |
| ================================================================================ |
| Test Section |
| ================================================================================ |
| --> |
| |
| <target name="test" depends="jar" description="run unit tests"> |
| <ant target="test" dir="core" inheritAll="false"/> |
| <ant target="test" dir="hcatalog-pig-adapter" inheritAll="false"/> |
| <ant target="test" dir="server-extensions" inheritAll="false"/> |
| <ant target="test" dir="webhcat/svr" inheritAll="false"/> |
| <ant target="test" dir="webhcat/java-client" inheritAll="false"/> |
| <ant target="test" dir="storage-handlers/hbase" inheritAll="false"/> |
| <!-- One checkstyle run for the whole repo. Runs after junit tests |
| to piggyback on resolved jars. --> |
| <path id="checkstyle.class.path"> |
| <fileset dir="core/build/lib/test"/> |
| </path> |
| <antcall target="checkstyle" inheritRefs="true"/> |
| </target> |
| |
| <target name="test-with-clover" depends="clover-init" |
| description="run unit tests and generate code coverage reports"> |
| <ant target="_test-with-clover" dir="core" inheritAll="false"/> |
| <ant target="_test-with-clover" dir="hcatalog-pig-adapter" inheritAll="false"/> |
| <ant target="_test-with-clover" dir="server-extensions" inheritAll="false"/> |
| <ant target="_test-with-clover" dir="webhcat/svr" inheritAll="false"/> |
| <ant target="_test-with-clover" dir="webhcat/java-client" inheritAll="false"/> |
| <!-- storage-handlers do not have coverage as they have not |
| yet been migrated to the new build files. --> |
| <ant target="test" dir="storage-handlers/hbase" inheritAll="false"/> |
| </target> |
| |
| |
| <!-- |
| ================================================================================ |
| Findbugs Section |
| ================================================================================ |
| --> |
| |
| <target name="findbugs" depends="init-findbugs,jar"> |
| <property name="findbugs.out.dir" value="${test.dir}/findbugs"/> |
| <property name="findbugs.exclude.file" value="${test.src.dir}/findbugsExcludeFile.xml"/> |
| <property name="findbugs.report.htmlfile" |
| value="${findbugs.out.dir}/hcat-findbugs-report.html"/> |
| <property name="findbugs.report.xmlfile" |
| value="${findbugs.out.dir}/hcat-findbugs-report.xml"/> |
| |
| <ant target="findbugs" dir="core" inheritAll="false"/> |
| <ant target="findbugs" dir="hcatalog-pig-adapter" inheritAll="false"/> |
| <ant target="findbugs" dir="server-extensions" inheritAll="false"/> |
| <ant target="findbugs" dir="webhcat/svr" inheritAll="false"/> |
| <ant target="findbugs" dir="webhcat/java-client" inheritAll="false"/> |
| </target> |
| |
| <!-- |
| ================================================================================ |
| Clean Section |
| ================================================================================ |
| --> |
| <!-- Clean up children --> |
| <target name="clean" description="Cleanup all build artifacts"> |
| <echo message="${ant.project.name}"/> |
| <delete dir="${build.dir}"/> |
| <ant target="clean" dir="core" inheritAll="false"/> |
| <ant target="clean" dir="hcatalog-pig-adapter" inheritAll="false"/> |
| <ant target="clean" dir="server-extensions" inheritAll="false"/> |
| <ant target="clean" dir="webhcat/svr" inheritAll="false"/> |
| <ant target="clean" dir="webhcat/java-client" inheritAll="false"/> |
| <ant target="clean" dir="storage-handlers/hbase" inheritAll="false"/> |
| <ant target="clean" dir="shims" inheritAll="false"/> |
| </target> |
| |
| <!-- |
| ================================================================================ |
| Docs Section |
| ================================================================================ |
| --> |
| <target name="docs" depends="forrest, javadoc" |
| description="Generate Javadoc and Forrest documentation"> |
| </target> |
| |
| <target name="forrest" if="forrest.home" |
| description="Generate forrest-based documentation. To use, specify -Dforrest.home=<base of Apache Forrest installation> on the command line."> |
| <exec dir="${docs.src}" executable="${forrest.home}/bin/forrest" |
| failonerror="true"> |
| </exec> |
| <copy todir="${build.docs}/"> |
| <fileset dir="${docs.src}/build/site/"/> |
| </copy> |
| </target> |
| |
| <target name="javadoc" depends="jar" description="Generate Javadoc documentation"> |
| <mkdir dir="${build.javadoc}"/> |
| <record name="${build.dir}/javadoc.log" action="start"/> |
| <javadoc overview="${src.dir}/../docs/overview.html" |
| packagenames="org.apache.hcatalog.*" |
| destdir="${build.javadoc}" |
| author="true" |
| version="true" |
| use="true" |
| noqualifier="all" |
| windowtitle="HCatalog ${hcatalog.version} API" |
| doctitle="HCatalog ${hcatalog.version} API" |
| failonerror="true"> |
| <packageset dir="core/src/main/java"/> |
| <packageset dir="hcatalog-pig-adapter/src/main/java"/> |
| <packageset dir="server-extensions/src/main/java"/> |
| <packageset dir="storage-handlers/hbase/src/gen-java"/> |
| <packageset dir="storage-handlers/hbase/src/java"/> |
| <packageset dir="webhcat/svr/src/main/java"/> |
| <packageset dir="webhcat/java-client/src/main/java"/> |
| <classpath> |
| <fileset dir="core/build/lib/compile"/> |
| <fileset dir="hcatalog-pig-adapter/build/lib/compile"/> |
| <fileset dir="hcatalog-pig-adapter/build/lib/provided"/> |
| <fileset dir="server-extensions/build/lib/compile"/> |
| <fileset dir="server-extensions/build/lib/provided"/> |
| <fileset dir="storage-handlers/hbase/build/lib/compile"/> |
| <fileset dir="storage-handlers/hbase/build/lib/provided"/> |
| <fileset dir="webhcat/svr/build/lib/compile"/> |
| <fileset dir="webhcat/svr/build/lib/provided"/> |
| </classpath> |
| <group title="hcatalog" packages="org.apache.hcatalog.*"/> |
| </javadoc> |
| <record name="${build.dir}/javadoc.log" action="stop"/> |
| <condition property="javadoc.warnings"> |
| <isfileselected file="${build.dir}/javadoc.log"> |
| <contains text="warnings"/> |
| </isfileselected> |
| </condition> |
| <fail if="javadoc.warnings">Javadoc comments contain warnings.</fail> |
| </target> |
| |
| <!-- |
| =============================================================================== |
| Deploy Section |
| =============================================================================== |
| --> |
| |
| <target name="mvn-deploy" depends="mvn-init" |
| description="Deploy artifacts to a Maven repository."> |
| <artifact:deploy file="pom.xml"> |
| <artifact:pom file="pom.xml"/> |
| <remoteRepository id="${mvn.deploy.repo.id}" url="${mvn.deploy.repo.url}"/> |
| </artifact:deploy> |
| <ant target="mvn-deploy" dir="core" inheritAll="false" useNativeBasedir="true"/> |
| <ant target="mvn-deploy" dir="hcatalog-pig-adapter" inheritAll="false" useNativeBasedir="true"/> |
| <ant target="mvn-deploy" dir="server-extensions" inheritAll="false" useNativeBasedir="true"/> |
| <ant target="mvn-deploy" dir="webhcat/java-client" inheritAll="false" useNativeBasedir="true"/> |
| <ant target="mvn-deploy" dir="webhcat/svr" inheritAll="false" useNativeBasedir="true"/> |
| </target> |
| |
| <target name="mvn-deploy-signed" depends="mvn-init" |
| description="Sign and deploy artifacts to a Maven repository."> |
| |
| <input message="Enter your gpg password (or just press return if using an agent): " |
| addproperty="gpg.passphrase"> |
| <handler classname="org.apache.tools.ant.input.SecureInputHandler"/> |
| </input> |
| |
| <_sign inputFile="pom.xml"/> |
| <artifact:deploy file="pom.xml"> |
| <artifact:pom file="pom.xml"/> |
| <attach file="pom.xml.asc" type="pom.asc"/> |
| <remoteRepository id="${mvn.deploy.repo.id}" url="${mvn.deploy.repo.url}"/> |
| </artifact:deploy> |
| |
| <ant target="mvn-deploy-signed" dir="core" inheritAll="false" useNativeBasedir="true"> |
| <property name="gpg.passphrase" value="${gpg.passphrase}"/> |
| </ant> |
| <ant target="mvn-deploy-signed" dir="hcatalog-pig-adapter" inheritAll="false" useNativeBasedir="true"> |
| <property name="gpg.passphrase" value="${gpg.passphrase}"/> |
| </ant> |
| <ant target="mvn-deploy-signed" dir="server-extensions" inheritAll="false" useNativeBasedir="true"> |
| <property name="gpg.passphrase" value="${gpg.passphrase}"/> |
| </ant> |
| <ant target="mvn-deploy-signed" dir="webhcat/java-client" inheritAll="false" useNativeBasedir="true"> |
| <property name="gpg.passphrase" value="${gpg.passphrase}"/> |
| </ant> |
| <ant target="mvn-deploy-signed" dir="webhcat/svr" inheritAll="false" useNativeBasedir="true"> |
| <property name="gpg.passphrase" value="${gpg.passphrase}"/> |
| </ant> |
| </target> |
| |
| <!-- |
| =============================================================================== |
| Distribution Section |
| =============================================================================== |
| --> |
| <target name="package" depends="jar, docs" description="Create an HCatalog release"> |
| <mkdir dir="${dist.dir}"/> |
| <mkdir dir="${dist.dir}/share/${ant.project.name}/lib"/> |
| <mkdir dir="${dist.dir}/etc/hcatalog"/> |
| <mkdir dir="${dist.dir}/bin"/> |
| <mkdir dir="${dist.dir}/sbin"/> |
| <mkdir dir="${dist.dir}/share/${ant.project.name}/scripts"/> |
| <mkdir dir="${dist.dir}/share/${ant.project.name}/templates/conf"/> |
| <mkdir dir="${dist.dir}/share/doc/${ant.project.name}"/> |
| <mkdir dir="${dist.dir}/share/doc/${ant.project.name}/api"/> |
| <mkdir dir="${dist.dir}/share/doc/${ant.project.name}/jdiff"/> |
| <mkdir dir="${dist.dir}/share/doc/${ant.project.name}/license"/> |
| |
| <copy todir="${dist.dir}/share/${ant.project.name}" includeEmptyDirs="false"> |
| <fileset dir="core/build"> |
| <include name="hcatalog-*.jar"/> |
| </fileset> |
| <fileset dir="hcatalog-pig-adapter/build"> |
| <include name="hcatalog-*.jar"/> |
| </fileset> |
| <fileset dir="server-extensions/build"> |
| <include name="hcatalog-*.jar"/> |
| </fileset> |
| </copy> |
| <copy todir="${dist.dir}/share/webhcat/svr/" includeEmptyDirs="false"> |
| <fileset dir="webhcat/svr/build"> |
| <include name="webhcat-*.jar"/> |
| </fileset> |
| </copy> |
| <copy todir="${dist.dir}/share/webhcat/svr/lib/" includeEmptyDirs="false"> |
| <fileset dir="webhcat/svr/build/lib/compile/"> |
| <include name="*.jar"/> |
| </fileset> |
| </copy> |
| <copy todir="${dist.dir}/share/webhcat/java-client/" includeEmptyDirs="false"> |
| <fileset dir="webhcat/java-client/build"> |
| <include name="webhcat-java-client*.jar"/> |
| </fileset> |
| </copy> |
| |
| <copy todir="${dist.dir}/bin"> |
| <fileset dir="bin/"> |
| <include name="hcat"/> |
| </fileset> |
| |
| </copy> |
| <copy todir="${dist.dir}/libexec"> |
| <fileset dir="bin"> |
| <include name="hcat-config.sh"/> |
| </fileset> |
| </copy> |
| |
| <copy todir="${dist.dir}/sbin"> |
| <fileset dir="${package.dir}"> |
| <include name="*.sh"/> |
| </fileset> |
| </copy> |
| |
| <copy todir="${dist.dir}/etc/${ant.project.name}"> |
| <fileset dir="conf"/> |
| </copy> |
| |
| <copy todir="${dist.dir}/etc/webhcat"> |
| <fileset dir="webhcat/svr/src/main/config/" /> |
| </copy> |
| |
| <copy todir="${dist.dir}/share/${ant.project.name}/scripts"> |
| <fileset dir="scripts"> |
| <include name="*.sh"/> |
| </fileset> |
| </copy> |
| |
| <copy todir="${dist.dir}/share/${ant.project.name}/templates/conf"> |
| <fileset dir="src/packages/templates/conf"> |
| <include name="*"/> |
| </fileset> |
| </copy> |
| |
| <copy todir="${dist.dir}/sbin"> |
| <fileset dir="${package.dir}"> |
| <include name="*.sh"/> |
| </fileset> |
| <fileset dir="webhcat/svr/src/main/bin"> |
| <include name="*.sh"/> |
| </fileset> |
| <fileset dir="bin"> |
| <include name="hcat_server.sh"/> |
| </fileset> |
| </copy> |
| |
| <!-- Copy the licenses and such --> |
| <copy todir="${dist.dir}/share/doc/${ant.project.name}"> |
| <fileset dir="."> |
| <include name="*.txt"/> |
| </fileset> |
| </copy> |
| |
| <copy todir="${dist.dir}/share/doc/${ant.project.name}/license"> |
| <fileset dir="license"/> |
| </copy> |
| |
| <chmod perm="ugo+x" type="file"> |
| <fileset dir="${dist.dir}/bin"/> |
| <fileset dir="${dist.dir}/sbin"/> |
| </chmod> |
| |
| <!--package storage-handlers --> |
| <property name="handlers.dir" value="${dist.dir}/share/hcatalog/storage-handlers"/> |
| <mkdir dir="${handlers.dir}"/> |
| <ant target="package" dir="storage-handlers/hbase" inheritAll="false"> |
| <property name="dist.handlers.dir" value="${handlers.dir}"/> |
| </ant> |
| |
| <!-- |
| While ant has a native tar task, we call out to the command-line |
| tar command because it preserves file permissions of our carefully |
| constructed package dir. |
| --> |
| <exec executable="tar"> |
| <arg value="-C"/> |
| <arg value="${build.dir}"/> |
| <arg value="-czf"/> |
| <arg value="${build.dir}/${final.name}.tar.gz"/> |
| <arg value="${final.name}"/> |
| </exec> |
| <checksum file="${build.dir}/${final.name}.tar.gz" forceOverwrite="yes"/> |
| </target> |
| |
| <target name="releaseaudit" description="generate a release audit report"> |
| <get src="${mvnrepo}/org/apache/rat/apache-rat/${apache-rat.version}/apache-rat-${apache-rat.version}.jar" |
| dest="${basedir}/build/apache-rat-${apache-rat.version}.jar" |
| usetimestamp="true" |
| skipexisting="true"/> |
| <java jar="${basedir}/build/apache-rat-${apache-rat.version}.jar" |
| fork="true" |
| output="${basedir}/build/releaseaudit_report.txt"> |
| <arg value="--dir"/> |
| <arg value="${basedir}"/> |
| <arg value="-e"/> |
| <arg value=".*/build/.*"/> |
| </java> |
| <echo message="releaseaudit report generated at ${basedir}/build/releaseaudit_report.txt"/> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Make release tarball --> |
| <!-- ================================================================== --> |
| <target name="src-release" depends="clean" description="Source distribution"> |
| <mkdir dir="${build.dir}"/> |
| <property name="src-release-tarball" |
| value="${build.dir}/${ant.project.name}-src-${hcatalog.version}.tar.gz"/> |
| <tar compression="gzip" longfile="gnu" destfile="${src-release-tarball}"> |
| <tarfileset dir="${basedir}" mode="644" prefix="${ant.project.name}-src-${hcatalog.version}"> |
| <include name="build-support/**"/> |
| <exclude name="build-support/scripts/**"/> |
| <include name="conf/**"/> |
| <include name="core/**"/> |
| <include name="hcatalog-pig-adapter/**"/> |
| <include name="server-extensions/**"/> |
| <include name="webhcat/**"/> |
| <include name="license/**"/> |
| <include name="shims/**"/> |
| <include name="src/**"/> |
| <include name="storage-handlers/**"/> |
| <include name="*.properties"/> |
| <include name="*.txt"/> |
| <include name="*.xml"/> |
| <include name="KEYS"/> |
| </tarfileset> |
| <tarfileset dir="${basedir}" mode="755" prefix="${ant.project.name}-src-${hcatalog.version}"> |
| <include name="bin/**"/> |
| <include name="build-support/scripts/**"/> |
| <include name="scripts/**"/> |
| </tarfileset> |
| </tar> |
| <checksum file="${src-release-tarball}" forceOverwrite="yes"/> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- End to end tests --> |
| <!-- ================================================================== --> |
| |
| <target name="test-e2e" description="run end-to-end tests"> |
| <ant dir="${test.e2e.dir}"/> |
| </target> |
| |
| <target name="test-e2e-install" description="deploy end-to-end tests to existing cluster"> |
| <ant dir="${test.e2e.dir}" target="install"/> |
| </target> |
| |
| <target name="test-e2e-deploy" description="deploy end-to-end tests to existing cluster"> |
| <ant dir="${test.e2e.dir}" target="deploy"/> |
| </target> |
| |
| <import file="build-support/ant/checkstyle.xml"/> |
| <import file="build-support/ant/deploy.xml"/> |
| <import file="build-support/ant/findbugs.xml"/> |
| <import file="build-support/ant/test.xml"/> |
| |
| </project> |