Author: eevans Date: Tue May 3 01:07:38 2011 New Revision: 1098881 URL: http://svn.apache.org/viewvc?rev=1098881&view=rev Log: publish cassandra artifacts to maven central
Patch by Stephen Connolly; reviewed by eevans for CASSANDRA-2561 Modified: cassandra/branches/cassandra-0.8/build.xml Modified: cassandra/branches/cassandra-0.8/build.xml URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/build.xml?rev=1098881&r1=1098880&r2=1098881&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8/build.xml (original) +++ cassandra/branches/cassandra-0.8/build.xml Tue May 3 01:07:38 2011 @@ -24,6 +24,14 @@ <property file="build.properties.default" /> <property name="debuglevel" value="source,lines,vars"/> + <!-- default version and SCM information (we need the default SCM info as people may checkout with git-svn) --> + <property name="base.version" value="0.8.0-beta1"/> + <property name="scm.default.path" value="cassandra/branches/cassandra-0.7"/> + <property name="scm.default.connection" value="scm:svn:http://svn.apache.org/repos/asf/${scm.default.path}"/> + <property name="scm.default.developerConnection" value="scm:svn:https://svn.apache.org/repos/asf/${scm.default.path}"/> + <property name="scm.default.url" value="http://svn.apache.org/viewvc/${scm.default.path}"/> + + <!-- directory details --> <property name="basedir" value="."/> <property name="build.src" value="${basedir}/src"/> <property name="build.src.java" value="${basedir}/src/java"/> @@ -40,6 +48,7 @@ <property name="build.classes.thrift" value="${build.classes}/thrift" /> <property name="build.classes.cql" value="${build.classes}/cql" /> <property name="javadoc.dir" value="${build.dir}/javadoc"/> + <property name="javadoc.jars.dir" value="${build.dir}/javadocs"/> <property name="interface.dir" value="${basedir}/interface"/> <property name="interface.thrift.dir" value="${interface.dir}/thrift"/> <property name="interface.thrift.gen-java" value="${interface.thrift.dir}/gen-java"/> @@ -55,7 +64,6 @@ <property name="test.long.src" value="${test.dir}/long"/> <property name="test.distributed.src" value="${test.dir}/distributed"/> <property name="dist.dir" value="${build.dir}/dist"/> - <property name="base.version" value="0.8.0-beta1"/> <property name="cql.driver.version" value="1.0.0" /> <condition property="version" value="${base.version}"> <isset property="release"/> @@ -64,9 +72,23 @@ <property name="version.properties.dir" value="${build.classes.main}/org/apache/cassandra/config/" /> <property name="final.name" value="${ant.project.name}-${version}"/> - <property name="maven-ant-tasks.version" value="2.1.1" /> + + <!-- details of what version of Maven ANT Tasks to fetch --> + <property name="maven-ant-tasks.version" value="2.1.3" /> + <property name="maven-ant-tasks.local" value="${user.home}/.m2/repository/org/apache/maven/maven-ant-tasks"/> <property name="maven-ant-tasks.url" value="http://repo2.maven.org/maven2/org/apache/maven/maven-ant-tasks" /> + <!-- details of how and which Maven repository we publish to --> + <property name="maven.version" value="3.0.3" /> + <condition property="maven-repository-url" value="https://repository.apache.org/service/local/staging/deploy/maven2"> + <isset property="release"/> + </condition> + <condition property="maven-repository-id" value="apache.releases.https"> + <isset property="release"/> + </condition> + <property name="maven-repository-url" value="https://repository.apache.org/content/repositories/snapshots"/> + <property name="maven-repository-id" value="apache.snapshots.https"/> + <property name="test.timeout" value="60000" /> <property name="test.long.timeout" value="300000" /> @@ -81,10 +103,26 @@ <available file="${build.dir}/maven-ant-tasks-${maven-ant-tasks.version}.jar" /> </condition> + <condition property="maven-ant-tasks.jar.local"> + <available file="${maven-ant-tasks.local}/${maven-ant-tasks.version}/maven-ant-tasks-${maven-ant-tasks.version}.jar" /> + </condition> + <condition property="is.source.artifact"> <available file="${build.src.java}" type="dir" /> </condition> + <condition property="scm.provider.git-svn"> + <available file="${basedir}/.git" type="dir"/> + </condition> + + <condition property="scm.provider.svn"> + <available file="${basedir}/.svn" type="dir"/> + </condition> + + <tstamp> + <format property="YEAR" pattern="yyyy"/> + </tstamp> + <!-- Add all the dependencies. --> @@ -101,6 +139,20 @@ </fileset> </path> + <macrodef name="create-javadoc"> + <attribute name="destdir"/> + <element name="filesets"/> + <sequential> + <javadoc destdir="@{destdir}" author="true" version="true" use="true" + windowtitle="${ant.project.name} API" classpathref="cassandra.classpath" + bottom="Copyright &copy; ${YEAR} The Apache Software Foundation" + useexternalfile="yes" + maxmemory="256m"> + <filesets/> + </javadoc> + </sequential> + </macrodef> + <!-- Setup the output directories. --> @@ -170,19 +222,54 @@ </java> </target> + <target name="scm-svn-info" description="Determines the current Subversion URL with peg revision" + if="scm.provider.svn"> + <exec executable="svn" dir="${basedir}" output="${build.dir}/svn-info.xml"> + <arg line="info --xml"/> + </exec> + <xmlproperty file="${build.dir}/svn-info.xml" collapseAttributes="true" prefix="svn" keepRoot="false"/> + <echo file="${build.dir}/scm.properties"> +connection=scm:svn:${svn.entry.url}@${svn.entry.commit.revision} +developerConnection=scm:svn:${svn.entry.url}@${svn.entry.commit.revision} +url=${svn.entry.url}?pathrev=${svn.entry.commit.revision} + </echo> + <replace file="${build.dir}/scm.properties"> + <replacefilter token="connection=scm:svn:https:" value="connection=scm:svn:http:"/> + <replacefilter token="Connection=scm:svn:http:" value="Connection=scm:svn:https:"/> + <replacefilter token="url=${svn.entry.repository.root}" value="url=http://svn.apache.org/viewvc"/> + </replace> + <property file="${build.dir}/scm.properties" prefix="scm"/> + </target> + + <target name="scm-info" description="Determines the SCM details" + unless="scm.connection" depends="scm-svn-info"> + <property name="scm.connection" value="${scm.default.connection}"/> + <property name="scm.developerConnection" value="${scm.default.developerConnection}"/> + <property name="scm.url" value="${scm.default.url}"/> + </target> <!-- Fetch Maven Ant Tasks and Cassandra's dependencies These targets are intentionally free of dependencies so that they can be run stand-alone from a binary release artifact. --> - <target name="maven-ant-tasks-download" unless="maven-ant-tasks.jar.exists"> + <target name="maven-ant-tasks-localrepo" unless="maven-ant-tasks.jar.exists" if="maven-ant-tasks.jar.local" + description="Fetch Maven ANT Tasks from Maven Local Repository"> + <mkdir dir="${build.dir}" /> + <copy file="${maven-ant-tasks.local}/${maven-ant-tasks.version}/maven-ant-tasks-${maven-ant-tasks.version}.jar" + tofile="${build.dir}/maven-ant-tasks-${maven-ant-tasks.version}.jar"/> + <property name="maven-ant-tasks.jar.exists" value="true"/> + </target> + + <target name="maven-ant-tasks-download" depends="maven-ant-tasks-localrepo" unless="maven-ant-tasks.jar.exists" + description="Fetch Maven ANT Tasks from Maven Central Repositroy"> <echo>Downloading Maven ANT Tasks...</echo> <mkdir dir="${build.dir}" /> <get src="${maven-ant-tasks.url}/${maven-ant-tasks.version}/maven-ant-tasks-${maven-ant-tasks.version}.jar" dest="${build.dir}/maven-ant-tasks-${maven-ant-tasks.version}.jar" usetimestamp="true" /> </target> - <target name="maven-ant-tasks-init" depends="maven-ant-tasks-download" unless="maven-ant-tasks.initialized"> + <target name="maven-ant-tasks-init" depends="maven-ant-tasks-download" unless="maven-ant-tasks.initialized" + description="Initialize Maven ANT Tasks"> <mkdir dir="${build.dir.lib}"/> <typedef uri="antlib:org.apache.maven.artifact.ant" classpathref="maven-ant-tasks.classpath" /> @@ -195,16 +282,92 @@ <artifact:remoteRepository id="jclouds" url="${artifact.remoteRepository.jclouds}"/> <artifact:remoteRepository id="oauth" url="${artifact.remoteRepository.oauth}"/> + <macrodef name="install"> + <attribute name="pomFile"/> + <attribute name="file"/> + <attribute name="classifier" default=""/> + <attribute name="packaging" default="jar"/> + <sequential> + <artifact:mvn mavenVersion="${maven.version}" fork="true"> + <arg value="org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file" /> + <arg value="-DpomFile=@{pomFile}" /> + <arg value="-Dfile=@{file}" /> + <arg value="-Dclassifier=@{classifier}" /> + <arg value="-Dpackaging=@{packaging}" /> + </artifact:mvn> + </sequential> + </macrodef> + + <macrodef name="deploy"> + <attribute name="pomFile"/> + <attribute name="file"/> + <attribute name="classifier" default=""/> + <attribute name="packaging" default="jar"/> + <sequential> + <artifact:mvn mavenVersion="${maven.version}" fork="true"> + <jvmarg value="-Xmx512m"/> + <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.2:sign-and-deploy-file" /> + <arg value="-Durl=${maven-repository-url}" /> + <arg value="-DrepositoryId=${maven-repository-id}" /> + <arg value="-DpomFile=@{pomFile}" /> + <arg value="-Dfile=@{file}" /> + <arg value="-Dclassifier=@{classifier}" /> + <arg value="-Dpackaging=@{packaging}" /> + <arg value="-Papache-release" /> + </artifact:mvn> + </sequential> + </macrodef> + <property name="maven-ant-tasks.initialized" value="true"/> </target> - <target name="maven-ant-tasks-retrieve-build" depends="maven-ant-tasks-init"> - <artifact:dependencies filesetId="build-dependency-jars" - sourcesFilesetId="build-dependency-sources" - cacheDependencyRefs="true" - dependencyRefsBuildFile="${build.dir}/build-dependencies.xml"> - <!-- FIXME: paranamer can be dropped after we're depending on avro - (since it depends on them). --> + <!-- this task defines the dependencies that will be fetched by Maven ANT Tasks + the dependencies are re-used for publishing artifacts to Maven Central + in order to keep everything consistent --> + <target name="maven-declare-dependencies" depends="maven-ant-tasks-init, scm-info" + description="Define dependencies and dependency versions"> + <!-- The parent pom defines the versions of all dependencies --> + <artifact:pom id="parent-pom" + groupId="org.apache.cassandra" + artifactId="cassandra-parent" + packaging="pom" + version="${version}" + url="http://cassandra.apache.org" + name="Apache Cassandra" + inceptionYear="2009" + description="The Apache Cassandra Project develops a highly scalable second-generation distributed database, bringing together Dynamo's fully distributed design and Bigtable's ColumnFamily-based data model."> + <license name="The Apache Software License, Version 2.0" url="http://www.apache.org/licenses/LICENSE-2.0.txt"/> + <scm connection="${scm.connection}" developerConnection="${scm.developerConnection}" url="${scm.url}"/> + <dependencyManagement> + <dependency groupId="com.google.guava" artifactId="guava" version="r08"/> + <dependency groupId="commons-cli" artifactId="commons-cli" version="1.1"/> + <dependency groupId="commons-codec" artifactId="commons-codec" version="1.2"/> + <dependency groupId="commons-collections" artifactId="commons-collections" version="3.2.1"/> + <dependency groupId="commons-lang" artifactId="commons-lang" version="2.4"/> + <dependency groupId="com.googlecode.concurrentlinkedhashmap" artifactId="concurrentlinkedhashmap-lru" version="1.1"/> + <dependency groupId="org.antlr" artifactId="antlr" version="3.2"/> + <dependency groupId="org.slf4j" artifactId="slf4j-api" version="1.6.1"/> + <dependency groupId="org.slf4j" artifactId="slf4j-log4j12" version="1.6.1"/> + <dependency groupId="org.codehaus.jackson" artifactId="jackson-core-asl" version="1.4.0"/> + <dependency groupId="org.codehaus.jackson" artifactId="jackson-mapper-asl" version="1.4.0"/> + <dependency groupId="jline" artifactId="jline" version="0.9.94"> + <exclusion groupId="junit" artifactId="junit"/> + </dependency> + <dependency groupId="com.googlecode.json-simple" artifactId="json-simple" version="1.1"/> + <dependency groupId="com.github.stephenc.high-scale-lib" artifactId="high-scale-lib" version="1.1.2"/> + <dependency groupId="com.github.stephenc" artifactId="jamm" version="0.2.2"/> + <dependency groupId="org.yaml" artifactId="snakeyaml" version="1.6"/> + <dependency groupId="org.apache.cassandra.deps" artifactId="avro" version="1.4.0-cassandra-1"> + <exclusion groupId="org.jboss.netty" artifactId="netty"/> + <exclusion groupId="com.thoughtworks.paranamer" artifactId="paranamer"/> + <exclusion groupId="com.thoughtworks.paranamer" artifactId="paranamer-ant"/> + <exclusion groupId="org.apache.velocity" artifactId="velocity"/> + </dependency> + + <dependency groupId="org.apache.thrift" artifactId="libthrift" version="0.6.1"> + <exclusion groupId="org.slf4j" artifactId="slf4j-log4j12"/> + </dependency> + <dependency groupId="com.thoughtworks.paranamer" artifactId="paranamer-ant" version="2.1"/> <dependency groupId="junit" artifactId="junit" version="4.6" /> <dependency groupId="commons-logging" artifactId="commons-logging" version="1.1.1"/> @@ -212,15 +375,169 @@ <dependency groupId="com.cloudera.hadoop" artifactId="hadoop-core" version="0.20.2-320"/> <dependency groupId="com.cloudera.hadoop" artifactId="hadoop-streaming" version="0.20.2-320"/> <dependency groupId="net.sf.jopt-simple" artifactId="jopt-simple" version="3.2"/> - <dependency groupId="net.java.dev.jna" artifactId="jna" version="3.2.7"/> + + <dependency groupId="net.sourceforge.cobertura" artifactId="cobertura" version="${cobertura.version}"/> + + <dependency groupId="org.apache.whirr" artifactId="whirr-core" version="0.4.0-incubating"/> + <dependency groupId="org.apache.whirr" artifactId="whirr-cli" version="0.4.0-incubating"/> + <dependency groupId="org.jclouds.provider" artifactId="aws-s3" version="1.0-beta-9b" /> + + <dependency groupId="log4j" artifactId="log4j" version="1.2.16" /> + <dependency groupId="org.apache.cassandra" artifactId="cassandra-all" version="${version}" /> + <dependency groupId="org.apache.cassandra" artifactId="cassandra-thrift" version="${version}" /> + <dependency groupId="org.apache.cassandra" artifactId="cassandra-cql" version="${version}" /> + </dependencyManagement> + <developer id="alakshman" name="Avinash Lakshman"/> + <developer id="antelder" name="Anthony Elder"/> + <developer id="brandonwilliams" name="Brandon Williams"/> + <developer id="eevans" name="Eric Evans"/> + <developer id="gdusbabek" name="Gary Dusbabek"/> + <developer id="goffinet" name="Chris Goffinet"/> + <developer id="jaakko" name="Laine Jaakko Olavi"/> + <developer id="jake" name="T Jake Luciani"/> + <developer id="jbellis" name="Jonathan Ellis"/> + <developer id="johan" name="Johan Oskarsson"/> + <developer id="junrao" name="Jun Rao"/> + <developer id="mriou" name="Matthieu Riou"/> + <developer id="pmalik" name="Prashant Malik"/> + <developer id="slebresne" name="Sylvain Lebresne"/> + </artifact:pom> + + <!-- each dependency set then defines the subset of the dependencies for that dependency set --> + <artifact:pom id="build-deps-pom" + artifactId="cassandra-build-deps"> + <parent groupId="org.apache.cassandra" + artifactId="cassandra-parent" + version="${version}"/> + <!-- FIXME: paranamer can be dropped after we're depending on avro + (since it depends on them). --> + <dependency groupId="com.thoughtworks.paranamer" artifactId="paranamer-ant"/> + <dependency groupId="junit" artifactId="junit"/> + <dependency groupId="commons-logging" artifactId="commons-logging"/> + <dependency groupId="org.apache.rat" artifactId="apache-rat"/> + <dependency groupId="com.cloudera.hadoop" artifactId="hadoop-core"/> + <dependency groupId="com.cloudera.hadoop" artifactId="hadoop-streaming"/> + <dependency groupId="net.sf.jopt-simple" artifactId="jopt-simple"/> + + <dependency groupId="net.java.dev.jna" artifactId="jna"/> + </artifact:pom> + + <artifact:pom id="coverage-deps-pom" + artifactId="cassandra-coverage-deps"> + <parent groupId="org.apache.cassandra" + artifactId="cassandra-parent" + version="${version}"/> + <dependency groupId="net.sourceforge.cobertura" artifactId="cobertura"/> + </artifact:pom> + + <artifact:pom id="test-deps-pom" + artifactId="cassandra-test-deps"> + <parent groupId="org.apache.cassandra" + artifactId="cassandra-parent" + version="${version}"/> + <dependency groupId="org.apache.whirr" artifactId="whirr-core"/> + <dependency groupId="org.apache.whirr" artifactId="whirr-cli"/> + <dependency groupId="org.jclouds.provider" artifactId="aws-s3"/> + </artifact:pom> + + <!-- now the pom's for artifacts being deployed to Maven Central --> + + <artifact:pom id="all-pom" + artifactId="cassandra-all" + url="http://cassandra.apache.org" + name="Apache Cassandra"> + <parent groupId="org.apache.cassandra" + artifactId="cassandra-parent" + version="${version}"/> + <scm connection="${scm.connection}" developerConnection="${scm.developerConnection}" url="${scm.url}"/> + <dependency groupId="com.google.guava" artifactId="guava"/> + <dependency groupId="commons-cli" artifactId="commons-cli"/> + <dependency groupId="commons-codec" artifactId="commons-codec"/> + <dependency groupId="commons-collections" artifactId="commons-collections"/> + <dependency groupId="commons-lang" artifactId="commons-lang"/> + <dependency groupId="com.googlecode.concurrentlinkedhashmap" artifactId="concurrentlinkedhashmap-lru"/> + <dependency groupId="org.antlr" artifactId="antlr"/> + <dependency groupId="org.slf4j" artifactId="slf4j-api"/> + <dependency groupId="org.apache.cassandra.deps" artifactId="avro"/> + <dependency groupId="org.codehaus.jackson" artifactId="jackson-core-asl"/> + <dependency groupId="org.codehaus.jackson" artifactId="jackson-mapper-asl"/> + <dependency groupId="jline" artifactId="jline"/> + <dependency groupId="com.googlecode.json-simple" artifactId="json-simple"/> + <dependency groupId="com.github.stephenc.high-scale-lib" artifactId="high-scale-lib"/> + <dependency groupId="org.yaml" artifactId="snakeyaml"/> + + <dependency groupId="log4j" artifactId="log4j"/> + <!-- cassandra has a hard dependency on log4j, so force slf4j's log4j provider at runtime --> + <dependency groupId="org.slf4j" artifactId="slf4j-log4j12" scope="runtime"/> + + <dependency groupId="org.apache.thrift" artifactId="libthrift"/> + <dependency groupId="org.apache.cassandra" artifactId="cassandra-thrift"/> + + <!-- don't need hadoop classes to run, but if you use the hadoop stuff --> + <dependency groupId="com.cloudera.hadoop" artifactId="hadoop-core" optional="true"/> + <dependency groupId="com.cloudera.hadoop" artifactId="hadoop-streaming" optional="true"/> + + <!-- don't need jna to run, but nice to have --> + <dependency groupId="net.java.dev.jna" artifactId="jna" optional="true"/> + + <!-- don't need jamm unless running a server in which case it needs to be a -javagent to be used anyway --> + <dependency groupId="com.github.stephenc" artifactId="jamm"/> + </artifact:pom> + <artifact:pom id="thrift-pom" + artifactId="cassandra-thrift" + url="http://cassandra.apache.org" + name="Apache Cassandra"> + <parent groupId="org.apache.cassandra" + artifactId="cassandra-parent" + version="${version}"/> + <scm connection="${scm.connection}" developerConnection="${scm.developerConnection}" url="${scm.url}"/> + <dependency groupId="commons-lang" artifactId="commons-lang"/> + <dependency groupId="org.slf4j" artifactId="slf4j-api"/> + <dependency groupId="org.apache.thrift" artifactId="libthrift"/> + </artifact:pom> + <artifact:pom id="cql-pom" + artifactId="cassandra-cql" + url="http://cassandra.apache.org" + name="Apache Cassandra"> + <parent groupId="org.apache.cassandra" + artifactId="cassandra-parent" + version="${version}"/> + <scm connection="${scm.connection}" developerConnection="${scm.developerConnection}" url="${scm.url}"/> + <dependency groupId="com.google.guava" artifactId="guava"/> + <dependency groupId="org.slf4j" artifactId="slf4j-api"/> + <dependency groupId="org.apache.thrift" artifactId="libthrift"/> + <dependency groupId="org.apache.cassandra" artifactId="cassandra-thrift"/> + <dependency groupId="org.apache.cassandra" artifactId="cassandra-all"/> + <!-- because cassandra-all uses log4j, and we need cassandra-all, consumers must use log4j, so force log4j version of slf4j --> + <dependency groupId="org.slf4j" artifactId="slf4j-log4j12" scope="runtime"/> + </artifact:pom> + + <artifact:pom id="dist-pom" + artifactId="apache-cassandra" + packaging="pom" + url="http://cassandra.apache.org" + name="Apache Cassandra"> + <parent groupId="org.apache.cassandra" + artifactId="cassandra-parent" + version="${version}"/> + <scm connection="${scm.connection}" developerConnection="${scm.developerConnection}" url="${scm.url}"/> + </artifact:pom> + </target> + + <target name="maven-ant-tasks-retrieve-build" depends="maven-declare-dependencies"> + <artifact:dependencies pomRefId="build-deps-pom" + filesetId="build-dependency-jars" + sourcesFilesetId="build-dependency-sources" + cacheDependencyRefs="true" + dependencyRefsBuildFile="${build.dir}/build-dependencies.xml"> <remoteRepository refid="central"/> <remoteRepository refid="apache"/> <remoteRepository refid="cloudera"/> <remoteRepository refid="java.net2"/> </artifact:dependencies> - <artifact:dependencies pathId="cobertura.classpath"> - <dependency groupId="net.sourceforge.cobertura" artifactId="cobertura" version="${cobertura.version}"/> + <artifact:dependencies pomRefId="coverage-deps-pom" + pathId="cobertura.classpath"> <remoteRepository refid="central"/> </artifact:dependencies> @@ -235,14 +552,11 @@ </target> <target name="maven-ant-tasks-retrieve-test" depends="maven-ant-tasks-init"> - <artifact:dependencies filesetId="test-dependency-jars" + <artifact:dependencies pomRefId="test-deps-pom" + filesetId="test-dependency-jars" sourcesFilesetId="test-dependency-sources" cacheDependencyRefs="true" dependencyRefsBuildFile="${build.dir}/test-dependencies.xml"> - <dependency groupId="org.apache.whirr" artifactId="whirr-core" version="0.4.0-incubating"/> - <dependency groupId="org.apache.whirr" artifactId="whirr-cli" version="0.4.0-incubating"/> - <dependency groupId="org.jclouds.provider" artifactId="aws-s3" version="1.0-beta-9b" /> - <remoteRepository refid="apache"/> <remoteRepository refid="central"/> <remoteRepository refid="jclouds"/> @@ -398,7 +712,7 @@ <!-- The jar target makes cassandra.jar output. --> - <target name="jar" depends="build" description="Assemble Cassandra JAR files"> + <target name="jar" depends="maven-declare-dependencies,build" description="Assemble Cassandra JAR files"> <mkdir dir="${build.classes.main}/META-INF" /> <mkdir dir="${build.classes.thrift}/META-INF" /> <copy file="LICENSE.txt" @@ -410,7 +724,11 @@ <copy file="NOTICE.txt" tofile="${build.classes.thrift}/META-INF/NOTICE.txt"/> + <artifact:writepom pomRefId="parent-pom" file="${build.dir}/${final.name}-parent.pom"/> + <!-- Thrift Jar --> + <artifact:writepom pomRefId="thrift-pom" + file="${build.dir}/${ant.project.name}-thrift-${version}.pom"/> <jar jarfile="${build.dir}/${ant.project.name}-thrift-${version}.jar" basedir="${build.classes.thrift}"> <manifest> @@ -421,6 +739,8 @@ </jar> <!-- Main Jar --> + <artifact:writepom pomRefId="all-pom" + file="${build.dir}/${final.name}.pom"/> <jar jarfile="${build.dir}/${final.name}.jar" basedir="${build.classes.main}"> <manifest> @@ -437,6 +757,8 @@ </jar> <!-- CQL driver Jar --> + <artifact:writepom pomRefId="cql-pom" + file="${build.dir}/${ant.project.name}-cql-${cql.driver.version}.pom"/> <jar jarfile="${build.dir}/${ant.project.name}-cql-${cql.driver.version}.jar" basedir="${build.classes.cql}"> <manifest> @@ -449,6 +771,78 @@ </jar> </target> + <!-- + The javadoc-jar target makes cassandra-javadoc.jar output required for publishing to Maven central repository. + --> + <target name="javadoc-jar" description="Assemble Cassandra JavaDoc JAR file"> + <mkdir dir="${javadoc.jars.dir}"/> + <create-javadoc destdir="${javadoc.jars.dir}/thrift"> + <filesets> + <fileset dir="${interface.thrift.dir}/gen-java" defaultexcludes="yes"> + <include name="org/apache/**/*.java"/> + </fileset> + </filesets> + </create-javadoc> + <jar jarfile="${build.dir}/${ant.project.name}-thrift-${version}-javadoc.jar" + basedir="${javadoc.jars.dir}/thrift"/> + + <create-javadoc destdir="${javadoc.jars.dir}/main"> + <filesets> + <fileset dir="${build.src.java}" defaultexcludes="yes"> + <include name="org/apache/**/*.java"/> + </fileset> + <fileset dir="${build.src.gen-java}" defaultexcludes="yes"> + <include name="org/apache/**/*.java"/> + </fileset> + <fileset dir="${build.src.driver}" defaultexcludes="yes"> + <include name="org/apache/**/*.java"/> + </fileset> + </filesets> + </create-javadoc> + <jar jarfile="${build.dir}/${final.name}-javadoc.jar" + basedir="${javadoc.jars.dir}/main"/> + + <create-javadoc destdir="${javadoc.jars.dir}/cql"> + <filesets> + <fileset dir="${build.src.driver}" defaultexcludes="yes"> + <include name="org/apache/**/*.java"/> + </fileset> + </filesets> + </create-javadoc> + <jar jarfile="${build.dir}/${ant.project.name}-cql-${cql.driver.version}-javadoc.jar" + basedir="${javadoc.jars.dir}/cql"/> + <!-- javadoc task always rebuilds so might as well remove the generated docs to prevent + being pulled into the distribution by accident --> + <delete quiet="true" dir="${javadoc.jars.dir}"/> + </target> + + <!-- + The sources-jar target makes cassandra-sources.jar output required for publishing to Maven central repository. + --> + <target name="sources-jar" depends="init,avro-generate" description="Assemble Cassandra Sources JAR file"> + <jar jarfile="${build.dir}/${ant.project.name}-thrift-${version}-sources.jar"> + <fileset dir="${interface.thrift.dir}/gen-java" defaultexcludes="yes"> + <include name="org/apache/**/*.java"/> + </fileset> + </jar> + <jar jarfile="${build.dir}/${final.name}-sources.jar"> + <fileset dir="${build.src.java}" defaultexcludes="yes"> + <include name="org/apache/**/*.java"/> + </fileset> + <fileset dir="${build.src.gen-java}" defaultexcludes="yes"> + <include name="org/apache/**/*.java"/> + </fileset> + <fileset dir="${build.src.driver}" defaultexcludes="yes"> + <include name="org/apache/**/*.java"/> + </fileset> + </jar> + <jar jarfile="${build.dir}/${ant.project.name}-cql-${cql.driver.version}-sources.jar"> + <fileset dir="${build.src.driver}" defaultexcludes="yes"> + <include name="org/apache/**/*.java"/> + </fileset> + </jar> + </target> + <!-- creates release tarballs --> <target name="artifacts" depends="jar,javadoc,py-cql-driver,tx-cql-driver" description="Create Cassandra release artifacts"> @@ -480,6 +874,8 @@ </fileset> </copy> + <artifact:writepom pomRefId="dist-pom" + file="${build.dir}/${final.name}-dist.pom"/> <tar compression="gzip" longfile="gnu" destfile="${build.dir}/${final.name}-bin.tar.gz"> @@ -760,22 +1156,16 @@ </target> <target name="javadoc" depends="init" description="Create javadoc"> - <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" - useexternalfile="yes" - maxmemory="256m"> - + <create-javadoc destdir="${javadoc.dir}"> + <filesets> <fileset dir="${build.src.java}" defaultexcludes="yes"> <include name="org/apache/**/*.java"/> </fileset> <fileset dir="${interface.thrift.gen-java}" defaultexcludes="yes"> <include name="org/apache/**/*.java"/> </fileset> - </javadoc> + </filesets> + </create-javadoc> </target> <!-- Generate Eclipse project description files --> @@ -908,4 +1298,113 @@ <arg line="${build.dir}" /> </exec> </target> + + <!-- Publish artifacts to Maven repositories --> + <target name="mvn-install" + depends="maven-declare-dependencies,artifacts,jar,sources-jar,javadoc-jar" + description="Installs the artifacts in the Maven Local Repository"> + + <!-- the parent --> + <install pomFile="${build.dir}/${final.name}-parent.pom" + file="${build.dir}/${final.name}-parent.pom" + packaging="pom"/> + + <!-- the distribution --> + <install pomFile="${build.dir}/${final.name}-dist.pom" + file="${build.dir}/${final.name}-dist.pom" + packaging="pom"/> + <install pomFile="${build.dir}/${final.name}-dist.pom" + file="${build.dir}/${final.name}-bin.tar.gz" + packaging="tar.gz" + classifier="bin"/> + <install pomFile="${build.dir}/${final.name}-dist.pom" + file="${build.dir}/${final.name}-src.tar.gz" + packaging="tar.gz" + classifier="src"/> + + <!-- the cassandra-thrift jar --> + <install pomFile="${build.dir}/${ant.project.name}-thrift-${version}.pom" + file="${build.dir}/${ant.project.name}-thrift-${version}.jar"/> + <install pomFile="${build.dir}/${ant.project.name}-thrift-${version}.pom" + file="${build.dir}/${ant.project.name}-thrift-${version}-sources.jar" + classifier="sources"/> + <install pomFile="${build.dir}/${ant.project.name}-thrift-${version}.pom" + file="${build.dir}/${ant.project.name}-thrift-${version}-javadoc.jar" + classifier="javadoc"/> + + <!-- the cassandra-all jar --> + <install pomFile="${build.dir}/${final.name}.pom" + file="${build.dir}/${final.name}.jar"/> + <install pomFile="${build.dir}/${final.name}.pom" + file="${build.dir}/${final.name}-sources.jar" + classifier="sources"/> + <install pomFile="${build.dir}/${final.name}.pom" + file="${build.dir}/${final.name}-javadoc.jar" + classifier="javadoc"/> + + <!-- the cassandra-cql jar --> + <install pomFile="${build.dir}/${ant.project.name}-cql-${cql.driver.version}.pom" + file="${build.dir}/${ant.project.name}-cql-${cql.driver.version}.jar"/> + <install pomFile="${build.dir}/${ant.project.name}-cql-${cql.driver.version}.pom" + file="${build.dir}/${ant.project.name}-cql-${cql.driver.version}-sources.jar" + classifier="sources"/> + <install pomFile="${build.dir}/${ant.project.name}-cql-${cql.driver.version}.pom" + file="${build.dir}/${ant.project.name}-cql-${cql.driver.version}-javadoc.jar" + classifier="javadoc"/> + </target> + + <target name="publish" + depends="mvn-install" + if="release" + description="Publishes the artifacts to the Maven repository"> + + <!-- the parent --> + <deploy pomFile="${build.dir}/${final.name}-parent.pom" + file="${build.dir}/${final.name}-parent.pom" + packaging="pom"/> + + <!-- the distribution --> + <deploy pomFile="${build.dir}/${final.name}-dist.pom" + file="${build.dir}/${final.name}-dist.pom" + packaging="pom"/> + <deploy pomFile="${build.dir}/${final.name}-dist.pom" + file="${build.dir}/${final.name}-bin.tar.gz" + packaging="tar.gz" + classifier="bin"/> + <deploy pomFile="${build.dir}/${final.name}-dist.pom" + file="${build.dir}/${final.name}-src.tar.gz" + packaging="tar.gz" + classifier="src"/> + + <!-- the cassandra-thrift jar --> + <deploy pomFile="${build.dir}/${ant.project.name}-thrift-${version}.pom" + file="${build.dir}/${ant.project.name}-thrift-${version}.jar"/> + <deploy pomFile="${build.dir}/${ant.project.name}-thrift-${version}.pom" + file="${build.dir}/${ant.project.name}-thrift-${version}-sources.jar" + classifier="sources"/> + <deploy pomFile="${build.dir}/${ant.project.name}-thrift-${version}.pom" + file="${build.dir}/${ant.project.name}-thrift-${version}-javadoc.jar" + classifier="javadoc"/> + + <!-- the cassandra-all jar --> + <deploy pomFile="${build.dir}/${final.name}.pom" + file="${build.dir}/${final.name}.jar"/> + <deploy pomFile="${build.dir}/${final.name}.pom" + file="${build.dir}/${final.name}-sources.jar" + classifier="sources"/> + <deploy pomFile="${build.dir}/${final.name}.pom" + file="${build.dir}/${final.name}-javadoc.jar" + classifier="javadoc"/> + + <!-- the cassandra-cql jar --> + <deploy pomFile="${build.dir}/${ant.project.name}-cql-${cql.driver.version}.pom" + file="${build.dir}/${ant.project.name}-cql-${cql.driver.version}.jar"/> + <deploy pomFile="${build.dir}/${ant.project.name}-cql-${cql.driver.version}.pom" + file="${build.dir}/${ant.project.name}-cql-${cql.driver.version}-sources.jar" + classifier="sources"/> + <deploy pomFile="${build.dir}/${ant.project.name}-cql-${cql.driver.version}.pom" + file="${build.dir}/${ant.project.name}-cql-${cql.driver.version}-javadoc.jar" + classifier="javadoc"/> + </target> + </project>