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 &amp;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 &amp;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>


Reply via email to