| <?xml version="1.0"?> |
| <!-- |
| ******************************************************************************** |
| Build file for Sketch library |
| ******************************************************************************** |
| Assumes the following directory structure: |
| <basedir> //this directory |
| |
| All source files are copied to an intermediate dir structure with the first |
| targets: "precopy1" and "precopy2". |
| This means all source dir are untouched. |
| |
| Build Directories |
| <basedir>/build //Volatile directory for build process |
| <basedir>/jarsIn //dependant jars |
| |
| Intermediate Directories |
| <basedir>/build/bin //javadoc compiler output and resource destination |
| <basedir>/build/src //Move all source here |
| <basedir>/build/jars //Move all dependent jars here |
| <basedir>/build/scripts //Move all scripts here, this build file will be moved here. |
| <basedir>/build/javadoc //Javadoc output and javadoc resources |
| // move all html & related here after the javadoc |
| // used for creating javaddoc.zip |
| Output Directories |
| <basedir>/build/out //Used for creating the distribution zip |
| <basedir>/build/out/jars //created jars |
| <basedir>/build/out/zips //javadoc.zip, src.zip |
| <basedir>/build/out/scripts //startup scripts & build.html |
| |
| --> |
| <!-- set basedir --> |
| <project name="Sketch" default="build" basedir="."> |
| <description> |
| Build file for Sketch Library |
| </description> |
| |
| <!-- project name properties --> |
| <property name="TitlePrefix" value="Pig Sketch Library" /> |
| <property name="outputFileNamePrefix" value="sketches-pig" /> |
| <property name="year" value="2012-2015" /> |
| |
| <!-- PROJECT INPUT PATHS, copied to intermediate paths --> |
| <property name="SrcJavadocPath" value="${basedir}/src/main/javadoc" /> |
| <property name="SrcJavadocResourcePath" value="${basedir}/src/main/javadoc/resources" /> |
| <property name="MavenMainPath" value="${basedir}/src/main/java" /> |
| <property name="MavenTestPath" value="${basedir}/src/test/java" /> |
| <property name="RelJavaPackagePath" value="com/yahoo/sketches" /> |
| <property name="SrcMainCommon" value="${MavenMainPath}/${RelJavaPackagePath}" /> |
| <property name="SrcTestCommon" value="${MavenTestPath}/${RelJavaPackagePath}" /> |
| |
| <!-- PROJECT BUILD PATH & FILE --> |
| <property name="BuildPath" value="${basedir}/build" /> |
| <property name="BuildFile" value="${basedir}/build.xml" /> |
| |
| <!-- PROJECT INTERMEDIATE PATHS, created in -init --> |
| <property name="IntMainPath" value="${BuildPath}/${MavenMainPath}" /> |
| <property name="IntTestPath" value="${BuildPath}/${MavenTestPath}" /> |
| <property name="IntBinPath" value="${BuildPath}/bin" /> |
| <property name="IntJavadocPath" value="${BuildPath}/javadoc" /> |
| <property name="IntJavadocResourcesPath" value="${BuildPath}/javadoc/resources" /> |
| <property name="IntScriptsPath" value="${BuildPath}/scripts" /> |
| <property name="IntJarsPath" value="${BuildPath}/jarsIn" /> |
| |
| <!-- PROJECT OUTPUT PATHS, created in -init --> |
| <property name="OutPath" value="${BuildPath}/out" /> |
| <property name="JarsOutPath" value="${OutPath}/jars" /> |
| <property name="ZipsOutPath" value="${OutPath}/zips" /> |
| <property name="ScriptsOutPath" value="${OutPath}/scripts" /> |
| |
| <!-- OVERVIEW HANDLING --> |
| <property name="OverviewFileName" value="overview.html" /> |
| |
| <!-- project dependency jar paths --> |
| <property name="TestNGJar" value="jarsIn/testng-6.8.8.jar" /> |
| <property name="PigJar" value="jarsIn/pig-0.12.1.jar" /> |
| <property name="SketchesCoreJar" value="jarsIn/sketches-core.jar" /> |
| |
| <!-- FILESETS --> |
| <!-- classpaths --> |
| <path id="ProjClasspath"> |
| <pathelement location="${TestNGJar}" /> |
| <pathelement location="${PigJar}" /> |
| <pathelement location="${SketchesCoreJar}" /> |
| </path> |
| |
| <!-- compiler properties --> |
| <property name="comp.debug" value="on"/> |
| <property name="comp.source.ver" value="1.8" /> |
| <property name="comp.compiler.ver" value="javac1.8" /> |
| <property name="comp.target.ver" value="1.8" /> |
| <property name="comp.fork" value="true" /> |
| |
| <!-- javadoc properties --> |
| <property name="jdoc.int.overview" value="${IntJavadocPath}/${OverviewFileName}" /> <!-- copy to here before javadoc --> |
| <property name="jdoc.windowTitle" value="${TitlePrefix} API" /> |
| <property name="jdoc.use" value="true" /> |
| <property name="jdoc.breakiterator" value="true" /> |
| <property name="jdoc.source.ver" value="1.8" /> |
| <property name="jdoc.verbose" value="false" /> |
| <property name="jdoc.author" value="true" /> |
| <property name="jdoc.version" value="true" /> |
| <property name="jdoc.public" value="true" /> |
| <property name="jdoc.protected" value="true" /> |
| <property name="jdoc.private" value="true" /> |
| <property name="jdoc.header" value="Sketch Library V4" /> |
| <property name="jdoc.docfilessubdirs" value="true" /> |
| |
| <!-- |
| ******************************************************************************** |
| proj Targets |
| ******************************************************************************** |
| --> |
| |
| <!--PRECOPY1 --> |
| <target name="precopy1" |
| depends="-init" |
| description="Copy remote dependant jarsIn to build jar directory" > |
| <copy file="${PigJar}" todir="${IntJarsPath}" /> |
| <copy file="${TestNGJar}" todir="${IntJarsPath}" /> |
| <copy file="${SketchesCoreJar}" todir="${IntJarsPath}" /> |
| </target> |
| |
| <!--PRECOPY2 --> |
| <target name="precopy2" |
| depends="precopy1" |
| description="Copy all sources to intermediate directories" > |
| <!-- Create directories --> |
| <mkdir dir="${IntMainPath}/${RelJavaPackagePath}" /> |
| <mkdir dir="${IntTestPath}/${RelJavaPackagePath}" /> |
| |
| <!-- Copy sources and directories below as well --> |
| <copy todir="${IntMainPath}/${RelJavaPackagePath}" > |
| <fileset dir="${SrcMainCommon}" /> |
| </copy> |
| <copy todir="${IntTestPath}/${RelJavaPackagePath}" > |
| <fileset dir="${SrcTestCommon}" /> |
| </copy> |
| |
| <!-- build file --> |
| <copy file="${BuildFile}" |
| todir="${ScriptsOutPath}" /> |
| |
| </target> |
| |
| <!-- COMPILE --> |
| <target name="compile" |
| depends="precopy2" |
| description="Compile all ${TitlePrefix} Java classes" > |
| |
| <javac srcdir="${IntMainPath}:${IntTestPath}" |
| destdir="${IntBinPath}" |
| source="${comp.source.ver}" |
| compiler="${comp.compiler.ver}" |
| target="${comp.target.ver}" |
| fork="${comp.fork}" |
| debug="${comp.debug}" |
| includeantruntime="false" > |
| <classpath refid="ProjClasspath"/> |
| <!-- compilerarg value="-Xlint:unchecked" / --> |
| </javac> |
| <echo message="Compile Done."/> |
| </target> |
| |
| <!-- jar classes --> |
| <target name="jar_classes" |
| depends="compile" |
| description="Pack all class files into a Jar file"> |
| <delete file="${JarsOutPath}/${outputFileNamePrefix}.jar"/> |
| <jar jarfile="${JarsOutPath}/${outputFileNamePrefix}.jar"> |
| <manifest> |
| <attribute name="Build-Date" value="${TODAY}"/> |
| </manifest> |
| <fileset dir="${IntBinPath}"> |
| <include name="**" /> |
| </fileset> |
| </jar> |
| <echo message="Classes jarred" /> |
| </target> |
| |
| <!-- zip source --> |
| <target name="zip_src" |
| depends="precopy2" |
| description="Pack all source files into a Zip file" > |
| <delete file="${ZipsOutPath}/${outputFileNamePrefix}_src.zip" /> |
| <zip destfile="${ZipsOutPath}/${outputFileNamePrefix}_src.zip" > |
| <zipfileset dir="${IntMainPath}" includes="**" prefix="src" /> |
| </zip> |
| </target> |
| |
| <!-- Create javadocs & copy javadoc resources --> |
| <target name="javadoc" |
| depends="precopy2" |
| description="Create ${TitlePrefix} javadocs"> |
| <delete dir="${IntJavadocPath}" /> |
| <mkdir dir="${IntJavadocPath}" /> |
| <copy file="${SrcJavadocPath}/${OverviewFileName}" todir="${IntJavadocPath}" /> |
| <javadoc |
| sourcepath="${IntMainPath}" |
| destdir="${IntJavadocPath}" |
| use="${jdoc.use}" |
| breakiterator="${jdoc.breakiterator}" |
| source="${jdoc.source.ver}" |
| verbose="${jdoc.verbose}" |
| author="${jdoc.author}" |
| version="${jdoc.version}" |
| windowtitle="${jdoc.windowTitle}" |
| overview="${jdoc.int.overview}" |
| public="${jdoc.public}" |
| header="${jdoc.header}" > |
| <classpath refid="ProjClasspath"/> |
| <arg value="-Xdoclint:all"/> |
| </javadoc> |
| |
| <!-- Copy maven resource files to javadoc dir --> |
| <copy todir="${IntJavadocResourcesPath}" > |
| <fileset dir="${SrcJavadocResourcePath}" /> |
| </copy> |
| |
| |
| <!-- View options: |
| public="${jdoc.public}" |
| protected="${jdoc.protected}" |
| private="${jdoc.private}" |
| --> |
| </target> |
| |
| <!-- COPY Misc files to out directories |
| <target name="copyDocs" |
| depends="precopy2" |
| description="Copy Data, scripts, misc to out directories." > |
| |
| </target> --> |
| |
| <!-- zip javadoc --> |
| <target name="zip_javadoc" |
| depends="javadoc" |
| description="Pack the javadocs into a Zip file" > |
| <delete file="${ZipsOutPath}/${outputFileNamePrefix}_javadoc.zip" /> |
| <zip destfile="${ZipsOutPath}/${outputFileNamePrefix}_javadoc.zip" > |
| <zipfileset dir="${IntJavadocPath}" |
| includes="**" prefix="javadoc" /> |
| </zip> |
| </target> |
| |
| <!-- zip All --> |
| <target name="zip_All" |
| depends="precopy2, jar_classes, zip_src, zip_javadoc" |
| description="Pack the jar and zips into this distribution Zip file"> |
| <delete file="${ZipsOutPath}/${outputFileNamePrefix}.zip" /> |
| <zip destfile="${ZipsOutPath}/${outputFileNamePrefix}.zip" > |
| <zipfileset dir="${OutPath}" |
| includes="**" /> |
| </zip> |
| </target> |
| |
| <target name="build" |
| depends="zip_All" |
| description="Build ${TitlePrefix}"> |
| </target> |
| |
| <!-- CLEAN --> |
| <target name="clean" > |
| <delete dir="${BuildPath}" /> |
| </target> |
| |
| <!-- |
| ******************************************************************************* |
| Internal Targets |
| ******************************************************************************* |
| --> |
| |
| <!-- Internal build target; not for external use --> |
| <target name="-init"> |
| <!-- set timestamp and print time --> |
| <tstamp> |
| <format property="TODAY" pattern="d-MMMM-yyyy.hh:mm:ss aa" locale="en"/> |
| <format property="DSTAMP" pattern="d-MMMM-yyyy" locale="en"/> |
| <format property="TSTAMP" pattern="hh:mm:ss aa" locale="en"/> |
| </tstamp> |
| <delete dir="${BuildPath}" /> |
| <!-- build directories --> |
| <mkdir dir="${BuildPath}" /> |
| <mkdir dir="${IntMainPath}" /> |
| <mkdir dir="${IntTestPath}" /> |
| <mkdir dir="${IntBinPath}" /> |
| <mkdir dir="${IntJavadocPath}" /> |
| <mkdir dir="${IntJavadocResourcesPath}" /> |
| <mkdir dir="${IntScriptsPath}" /> |
| <mkdir dir="${IntJarsPath}" /> |
| <mkdir dir="${OutPath}" /> |
| <mkdir dir="${JarsOutPath}" /> |
| <mkdir dir="${ZipsOutPath}" /> |
| <mkdir dir="${ScriptsOutPath}" /> |
| <echo message="Build time: ${TODAY}"/> |
| <echo message="Initialized" /> |
| </target> |
| |
| </project> |