Adding target to pull down eclipse p2 publisher from nearest mirror
diff --git a/common/common.properties b/common/common.properties
index 92a6a12..99c13b8 100644
--- a/common/common.properties
+++ b/common/common.properties
@@ -90,6 +90,7 @@
 package.war.output.file=${ant.project.name}-${bundle.version}.war
 package.source-jar.output.file=${ant.project.name}-sources-${bundle.version}.jar
 org.springframework.build.aws.ant.version=3.0.3.RELEASE
+p2.publishing.dir=${basedir}/target/publishing
 
 # AspectJ Properties
 org.aspectj.tools.version=1.6.6.RELEASE
diff --git a/multi-bundle/publish.xml b/multi-bundle/publish.xml
index a3c6342..258ab56 100644
--- a/multi-bundle/publish.xml
+++ b/multi-bundle/publish.xml
@@ -12,118 +12,126 @@
  ******************************************************************************
 -->
 <project name="publish-multi-bundle" xmlns:ivy="antlib:org.apache.ivy.ant"
-		xmlns:aws="antlib:org.springframework.build.aws">
+        xmlns:aws="antlib:org.springframework.build.aws">
 
-	<import file="common.xml"/>
+    <import file="common.xml"/>
 
 <!-- Main targets -->
-	<target name="publish"
-			description="Publishes all artifacts to remote repositories">
-		<all-bundles target="publish"/>
-	</target>
+    <target name="publish"
+            description="Publishes all artifacts to remote repositories">
+        <all-bundles target="publish"/>
+    </target>
 
-	<target name="publish-eclipse"
-			description="Publishes all artifacts to remote repositories">
-		<all-bundles target="publish-eclipse"/>
-	</target>
-	
-	<target name="publish-ivy-zodiac"
-			description="Publishes all ivy artifacts to remote repositories">
-		<all-bundles target="publish-ivy-zodiac"/>
-	</target>
+    <target name="publish-eclipse"
+            description="Publishes all artifacts to remote repositories">
+        <all-bundles target="publish-eclipse"/>
+    </target>
+    
+    <target name="publish-ivy-zodiac"
+            description="Publishes all ivy artifacts to remote repositories">
+        <all-bundles target="publish-ivy-zodiac"/>
+    </target>
 
-	<target name="publish-ivy-eclipse"
-			description="Publishes all ivy artifacts to remote repositories">
-		<all-bundles target="publish-ivy-eclipse"/>
-	</target>
+    <target name="publish-ivy-eclipse"
+            description="Publishes all ivy artifacts to remote repositories">
+        <all-bundles target="publish-ivy-eclipse"/>
+    </target>
 
-	<target name="publish-maven"
-			description="Publishes all maven artifacts to remote repositories">
-		<all-bundles target="publish-maven"/>
-	</target>
+    <target name="publish-maven"
+            description="Publishes all maven artifacts to remote repositories">
+        <all-bundles target="publish-maven"/>
+    </target>
 
-	<target name="install-maven">
-		<all-bundles target="install-maven"/>
-	</target>
+    <target name="install-maven">
+        <all-bundles target="install-maven"/>
+    </target>
+    
+    <target name="p2.extract-publisher" description="Extracts Equinox+P2 needed for P2 Publishing">
+        <mkdir dir="${p2.publishing.dir}"/>
+        <get src="http://www.eclipse.org/downloads/download.php?file=/equinox/drops/R-3.6.1-201009090800/equinox-p2-agent-3.6.1-linux.tar.gz&amp;r=1"
+             dest="${p2.publishing.dir}/p2agent.zip"
+             usetimestamp="true"/>
+        <gunzip src="${p2.publishing.dir}/p2agent.zip" dest="${p2.publishing.dir}"/>
+    </target>
 
-	<target name="publish-package-amazon" depends="aws.init">
-		<fail message="The 'project.name' property must be set on this project.">
-			<condition>
-				<not>
-					<isset property="project.name"/>
-				</not>
-			</condition>
-		</fail>
-		<checksum file="${package.output.file}" algorithm="sha1"/>
-		<aws:s3 accessKey="${accessKey}" secretKey="${secretKey}">
-			<upload bucketName="${zodiac.basename}" file="${package.output.file}" toFile="zips/${adjusted.release.type}/${project.key}/${bundle.version}/${package.file.name}" publicRead="true">
-				<metadata name="project.name" value="${project.name}"/>
-				<metadata name="release.type" value="${release.type}"/>
-				<metadata name="bundle.version" value="${bundle.version}"/>
-				<metadata name="package.file.name" value="${package.file.name}"/>
-			</upload>
-			<upload bucketName="${zodiac.basename}" file="${package.output.file}.sha1"
-					toFile="zips/${adjusted.release.type}/${project.key}/${bundle.version}/${package.file.name}.sha1" publicRead="true">
-			</upload>
-		</aws:s3>
-	</target>
+    <target name="publish-package-amazon" depends="aws.init">
+        <fail message="The 'project.name' property must be set on this project.">
+            <condition>
+                <not>
+                    <isset property="project.name"/>
+                </not>
+            </condition>
+        </fail>
+        <checksum file="${package.output.file}" algorithm="sha1"/>
+        <aws:s3 accessKey="${accessKey}" secretKey="${secretKey}">
+            <upload bucketName="${zodiac.basename}" file="${package.output.file}" toFile="zips/${adjusted.release.type}/${project.key}/${bundle.version}/${package.file.name}" publicRead="true">
+                <metadata name="project.name" value="${project.name}"/>
+                <metadata name="release.type" value="${release.type}"/>
+                <metadata name="bundle.version" value="${bundle.version}"/>
+                <metadata name="package.file.name" value="${package.file.name}"/>
+            </upload>
+            <upload bucketName="${zodiac.basename}" file="${package.output.file}.sha1"
+                    toFile="zips/${adjusted.release.type}/${project.key}/${bundle.version}/${package.file.name}.sha1" publicRead="true">
+            </upload>
+        </aws:s3>
+    </target>
 
-	<target name="publish-package-eclipse-build">
-		<fail message="The 'project.name' property must be set on this project.">
-			<condition>
-				<not>
-					<isset property="project.name"/>
-				</not>
-			</condition>
-		</fail>
-		<checksum file="${package.output.file}" algorithm="sha1"/>
-		<sshexec host="build.eclipse.org" 
-				username="${eclipse.buildId}" 
-				keyfile="${key.file}" 
-				passphrase="${passphrase}"
-				command="mkdir -pv /opt/public/rt/virgo/zips/${adjusted.release.type}/${project.key}/${bundle.version}"/>
-		<scp localFile="${package.output.file}"
-				todir="${eclipse.buildId}@build.eclipse.org:/opt/public/rt/virgo/zips/${adjusted.release.type}/${project.key}/${bundle.version}" 
-				keyfile="${key.file}"
-				passphrase="${passphrase}" />
-		<scp localFile="${package.output.file}.sha1"
-				todir="${eclipse.buildId}@build.eclipse.org:/opt/public/rt/virgo/zips/${adjusted.release.type}/${project.key}/${bundle.version}" 
-				keyfile="${key.file}"
-				passphrase="${passphrase}" />
-	</target>
-	
-	<target name="publish-package-eclipse-download">
-		<fail message="The 'project.name' property must be set on this project.">
-			<condition>
-				<not>
-					<isset property="project.name"/>
-				</not>
-			</condition>
-		</fail>
-		<checksum file="${package.output.file}" algorithm="sha1"/>
-		<sshexec host="download1.eclipse.org" 
-				username="${eclipse.committerId}" 
-				keyfile="${key.file}" 
-				passphrase="${passphrase}"
-				command="mkdir -pv /home/data/httpd/download.eclipse.org/virgo/${adjusted.release.type}/${project.key}/${bundle.version}"/>
-		<scp localFile="${package.output.file}"
-				todir="${eclipse.committerId}@download1.eclipse.org:/home/data/httpd/download.eclipse.org/virgo/${adjusted.release.type}/${project.key}/${bundle.version}" 
-				keyfile="${key.file}"
-				passphrase="${passphrase}" />
-		<scp localFile="${package.output.file}.sha1"
-				todir="${eclipse.committerId}@download1.eclipse.org:/home/data/httpd/download.eclipse.org/virgo/${adjusted.release.type}/${project.key}/${bundle.version}" 
-				keyfile="${key.file}"
-				passphrase="${passphrase}" />
-	</target>
+    <target name="publish-package-eclipse-build">
+        <fail message="The 'project.name' property must be set on this project.">
+            <condition>
+                <not>
+                    <isset property="project.name"/>
+                </not>
+            </condition>
+        </fail>
+        <checksum file="${package.output.file}" algorithm="sha1"/>
+        <sshexec host="build.eclipse.org" 
+                username="${eclipse.buildId}" 
+                keyfile="${key.file}" 
+                passphrase="${passphrase}"
+                command="mkdir -pv /opt/public/rt/virgo/zips/${adjusted.release.type}/${project.key}/${bundle.version}"/>
+        <scp localFile="${package.output.file}"
+                todir="${eclipse.buildId}@build.eclipse.org:/opt/public/rt/virgo/zips/${adjusted.release.type}/${project.key}/${bundle.version}" 
+                keyfile="${key.file}"
+                passphrase="${passphrase}" />
+        <scp localFile="${package.output.file}.sha1"
+                todir="${eclipse.buildId}@build.eclipse.org:/opt/public/rt/virgo/zips/${adjusted.release.type}/${project.key}/${bundle.version}" 
+                keyfile="${key.file}"
+                passphrase="${passphrase}" />
+    </target>
+    
+    <target name="publish-package-eclipse-download">
+        <fail message="The 'project.name' property must be set on this project.">
+            <condition>
+                <not>
+                    <isset property="project.name"/>
+                </not>
+            </condition>
+        </fail>
+        <checksum file="${package.output.file}" algorithm="sha1"/>
+        <sshexec host="download1.eclipse.org" 
+                username="${eclipse.committerId}" 
+                keyfile="${key.file}" 
+                passphrase="${passphrase}"
+                command="mkdir -pv /home/data/httpd/download.eclipse.org/virgo/${adjusted.release.type}/${project.key}/${bundle.version}"/>
+        <scp localFile="${package.output.file}"
+                todir="${eclipse.committerId}@download1.eclipse.org:/home/data/httpd/download.eclipse.org/virgo/${adjusted.release.type}/${project.key}/${bundle.version}" 
+                keyfile="${key.file}"
+                passphrase="${passphrase}" />
+        <scp localFile="${package.output.file}.sha1"
+                todir="${eclipse.committerId}@download1.eclipse.org:/home/data/httpd/download.eclipse.org/virgo/${adjusted.release.type}/${project.key}/${bundle.version}" 
+                keyfile="${key.file}"
+                passphrase="${passphrase}" />
+    </target>
 
 <!-- Other targets -->
-	<target name="aws.init" depends="ivy.init">
-		<ivy:cachepath resolveId="spring.aws.ant.classpath" pathid="spring.aws.ant.classpath"
-				organisation="org.springframework.build" module="org.springframework.build.aws.ant"
-				revision="${org.springframework.build.aws.ant.version}" conf="runtime" type="jar" inline="true"
-				log="download-only"/>
-		<taskdef resource="org/springframework/build/aws/ant/antlib.xml" uri="antlib:org.springframework.build.aws"
-			classpathref="spring.aws.ant.classpath" />
-	</target>
+    <target name="aws.init" depends="ivy.init">
+        <ivy:cachepath resolveId="spring.aws.ant.classpath" pathid="spring.aws.ant.classpath"
+                organisation="org.springframework.build" module="org.springframework.build.aws.ant"
+                revision="${org.springframework.build.aws.ant.version}" conf="runtime" type="jar" inline="true"
+                log="download-only"/>
+        <taskdef resource="org/springframework/build/aws/ant/antlib.xml" uri="antlib:org.springframework.build.aws"
+            classpathref="spring.aws.ant.classpath" />
+    </target>
 
 </project>