As I am not a cassandra committer I'd rather do the promotion with a vote.

There are two staging repositories:

https://repository.apache.org/content/repositories/orgapachecassandra-065/

Which contains the dependencies which are not available in the maven central
repository (libthrift and avro... actually these are slightly tweaked as
jars with both .java and .class files can cause problems for people when
compiling code, so I have stripped out the .java files and rebuilt)

The second staging repository is:

https://repository.apache.org/content/repositories/orgapachecassandra-064/

This contains the actual cassandra jars.

I have given these the GAV of org.apache.cassandra:cassandra-all:0.7.0-rc4
for two reasons:
1. There will be eventually cassandra-thrift-server, cassandra-core,
cassandra-thrift-client, etc [not committing to how they will be split out,
but the point is that they will be split out] so a -all.jar makes most
naming sense in this case
2. Also don't want to conflict with the riptano GAV coordinates as there is
a 0.7.0-rc4 already.

Attached is the patch I am using to publish the cassandra jars:

Vote will be open for 72 hours and will proceed by lazy consensus.

-Stephen
Index: build.xml
===================================================================
--- build.xml	(revision 1053977)
+++ build.xml	(working copy)
@@ -18,7 +18,8 @@
  ~ under the License.
  -->
 <project basedir="." default="build" name="apache-cassandra"
-         xmlns:ivy="antlib:org.apache.ivy.ant">
+         xmlns:ivy="antlib:org.apache.ivy.ant"
+         xmlns:artifact="antlib:org.apache.maven.artifact.ant">
     <property environment="env"/>
     <property file="build.properties" />
     <property name="debuglevel" value="source,lines,vars"/>
@@ -57,6 +58,11 @@
     <property name="ivy.version" value="2.1.0" />
     <property name="ivy.url"
               value="http://repo2.maven.org/maven2/org/apache/ivy/ivy"; />
+    <property name="mavenanttasks.version" value="2.1.1" />
+    <property name="mavenanttasks.url"
+              value="http://repo2.maven.org/maven2/org/apache/maven/maven-ant-tasks"; />
+    <property name="maven-repository-url" value="https://repository.apache.org/service/local/staging/deploy/maven2"; />
+    <property name="maven-repository-id" value="apache.releases.https" />
 
     <!-- http://cobertura.sourceforge.net/ -->
     <property name="cobertura.build.dir" value="${build.dir}/cobertura"/>
@@ -70,6 +76,10 @@
       <available file="${build.dir}/ivy-${ivy.version}.jar" />
     </condition>
 
+    <condition property="mavenanttasks.jar.exists">
+      <available file="${build.dir}/maven-ant-tasks-${mavenanttasks.version}.jar" />
+    </condition>
+
     <condition property="is.source.artifact">
       <available file="${build.src.java}" type="dir" />
     </condition>
@@ -83,6 +93,7 @@
         </fileset>
         <pathelement location="${build.dir}/ivy-${ivy.version}.jar"/>
     </path>
+    <path id="maven-ant-tasks.classpath" path="${build.dir}/maven-ant-tasks-${mavenanttasks.version}.jar" />
     <path id="cassandra.classpath">
         <pathelement location="${cobertura.classes.dir}"/>
         <pathelement location="${build.classes}"/>
@@ -164,6 +175,21 @@
       <property name="ivy.initialized" value="true"/>
     </target>
 
+    <target name="maven-ant-tasks-download" unless="mavenanttasks.jar.exists">
+      <echo>Downloading Maven ANT Tasks...</echo>
+      <mkdir dir="${build.dir}" />
+      <get src="${mavenanttasks.url}/${mavenanttasks.version}/maven-ant-tasks-${mavenanttasks.version}.jar"
+           dest="${build.dir}/maven-ant-tasks-${mavenanttasks.version}.jar" usetimestamp="true" />
+    </target>
+
+    <target name="maven-ant-tasks-init" depends="maven-ant-tasks-download" unless="mavenanttasks.initialized">
+      <mkdir dir="${build.dir.lib}"/>
+      <typedef resource="org/apache/maven/artifact/ant/antlib.xml"
+           uri="antlib:org.apache.maven.artifact.ant"
+           classpathref="maven-ant-tasks.classpath" />
+      <property name="mavenanttasks.initialized" value="true"/>
+    </target>
+
     <target name="ivy-retrieve-build" depends="ivy-init">
       <ivy:retrieve type="jar,source" sync="true"
              pattern="${build.dir.lib}/[type]s/[artifact]-[revision].[ext]" />
@@ -310,6 +336,94 @@
       </jar>
     </target>
 
+    <target name="javadoc-jar" depends="javadoc" description="Assemble Cassandra JavaDoc JAR file">
+      <jar jarfile="${build.dir}/${final.name}-javadoc.jar"
+           basedir="${javadoc.dir}"/>
+    </target>
+
+    <target name="sources-jar" depends="init,avro-generate" description="Assemble Cassandra Sources JAR file">
+      <jar jarfile="${build.dir}/${final.name}-sources.jar">
+      <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>
+      <fileset dir="${interface.avro.dir}" defaultexcludes="yes">
+        <include name="org/apache/**/*.java"/>
+      </fileset>
+      </jar>
+    </target>
+    <target name="pom" depends="init,maven-ant-tasks-init" description="Create Maven POM file">
+      <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.u...@${svn.entry.commit.revision}
+developerConnection=scm:svn:${svn.entry.u...@${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"/>
+      <artifact:pom id="all-pom" 
+                    groupId="org.apache.cassandra" 
+                    artifactId="cassandra-all"
+                    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}"/>
+        <dependency groupId="com.google.guava" artifactId="guava" version="r05"/>
+        <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.mortbay.jetty" artifactId="jetty" version="6.1.21"/>
+        <dependency groupId="org.mortbay.jetty" artifactId="jetty-util" version="6.1.21"/>
+        <dependency groupId="org.antlr" artifactId="antlr" version="3.1.3"/>
+        <dependency groupId="org.slf4j" artifactId="slf4j-api" version="1.6.1"/>
+        <dependency groupId="org.slf4j" artifactId="slf4j-log4j12" version="1.6.1" scope="provided"/>
+        <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.1"/>
+        <dependency groupId="org.yaml" artifactId="snakeyaml" version="1.6"/>
+        <dependency groupId="org.safehaus.jug" artifactId="jug" version="2.0.0" classifier="asl"/>
+        <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.cassandra.deps" artifactId="libthrift" version="0.5.0"/>
+        <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="ianh" name="Ian Holsman"/>
+        <developer id="jaakko" name="Laine Jaakko Olavi"/>
+        <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"/>
+      </artifact:pom>
+      <artifact:writepom pomRefId="all-pom" file="${build.dir}/${final.name}.pom"/>
+    </target>
+
     <!-- creates release tarballs -->
     <target name="artifacts" depends="jar,javadoc"
             description="Create Cassandra release artifacts">
@@ -432,6 +546,40 @@
       </rat:report>
     </target>
 
+  <target name="publish" depends="maven-ant-tasks-init,pom,jar,sources-jar,javadoc-jar">
+    <!-- sign and deploy the main artifact -->
+    <artifact:mvn>
+      <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.1:sign-and-deploy-file" />
+      <arg value="-Durl=${maven-repository-url}" />
+      <arg value="-DrepositoryId=${maven-repository-id}" />
+      <arg value="-DpomFile=${build.dir}/${final.name}.pom" />
+      <arg value="-Dfile=${build.dir}/${final.name}.jar" />
+      <arg value="-Pgpg" />
+    </artifact:mvn>
+
+    <!-- sign and deploy the sources artifact -->
+    <artifact:mvn>
+      <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.1:sign-and-deploy-file" />
+      <arg value="-Durl=${maven-repository-url}" />
+      <arg value="-DrepositoryId=${maven-repository-id}" />
+      <arg value="-DpomFile=${build.dir}/${final.name}.pom" />
+      <arg value="-Dfile=${build.dir}/${final.name}-sources.jar" />
+      <arg value="-Dclassifier=sources" />
+      <arg value="-Pgpg" />
+    </artifact:mvn>
+ 
+    <!-- sign and deploy the javadoc artifact -->
+    <artifact:mvn>
+      <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.1:sign-and-deploy-file" />
+      <arg value="-Durl=${maven-repository-url}" />
+      <arg value="-DrepositoryId=${maven-repository-id}" />
+      <arg value="-DpomFile=${build.dir}/${final.name}.pom" />
+      <arg value="-Dfile=${build.dir}/${final.name}-javadoc.jar" />
+      <arg value="-Dclassifier=javadoc" />
+      <arg value="-Pgpg" />
+    </artifact:mvn>
+  </target>
+
   <target name="build-test" depends="build" description="Compile test classes">
     <javac
      debug="true"
@@ -562,7 +710,8 @@
     </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">
+      bottom="Copyright &amp;copy; ${YEAR} The Apache Software Foundation"
+      maxmemory="256m">
 
       <fileset dir="${build.src.java}" defaultexcludes="yes">
         <include name="org/apache/**/*.java"/>
@@ -570,6 +719,9 @@
       <fileset dir="${interface.thrift.gen-java}" defaultexcludes="yes">
         <include name="org/apache/**/*.java"/>
       </fileset>
+      <fileset dir="${interface.avro.dir}" defaultexcludes="yes">
+        <include name="org/apache/**/*.java"/>
+      </fileset>
     </javadoc>
    </target>
 

Reply via email to