<?xml version="1.0" encoding="UTF-8"?>
<project name="publish-common" xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:maven="antlib:org.apache.maven.artifact.ant">

	<import file="common.xml"/>

<!-- Main targets -->
	<target name="publish" depends="publish-ivy, publish-maven"
			description="Publishes all artifacts to remote repositories"/>

	<target name="publish-ivy" depends="ivy.init, resolve">
		<delete quiet="true" file="${ivy.output.file}"/>
		<mkdir dir="${ivy.output.dir}"/>

 		<ivy:publish resolver="${publication.resolver.prefix}-bundle-publish" pubdate="${timestamp}"
				status="${release.type}">
 			<artifacts pattern="${ivy.output.dir}/[artifact].[ext]"/>
 			<artifacts pattern="${jar.output.dir}/[artifact].[ext]"/>
 			<artifacts pattern="${source-jar.output.dir}/[artifact].[ext]"/>
 		</ivy:publish>
	</target>

	<target name="publish-maven" depends="create.pom, snapshot.pom, maven.init" unless="local.build">
		<maven:deploy file="${jar.output.file}">
			<remoteRepository url="s3://${publish.bucket}/maven/bundles/${adjusted.release.type}">
				<authentication username="${accessKey}" passphrase="${secretKey}"/>
			</remoteRepository>
			<pom file="${pom.output.file}"/>
			<attach file="${source-jar.output.file}" classifier="sources"/>
		</maven:deploy>
	</target>

	<target name="publish-maven-local" depends="create.pom, snapshot.pom, maven.init">
		<maven:install file="${jar.output.file}">
			<pom file="${pom.output.file}"/>
			<attach file="${source-jar.output.file}" classifier="sources"/>
		</maven:install>
	</target>

	<target name="publish-maven-central" depends="maven.init">
		<property name="maven.central.repository" value="s3://maven.springframework.org/${adjusted.release.type}"/>
		<maven:deploy file="${jar.output.file}">
			<remoteRepository url="${maven.central.repository}">
				<authentication username="${accessKey}" passphrase="${secretKey}"/>
			</remoteRepository>
			<pom file="${local.pom.output.file}"/>
			<attach file="${source-jar.output.file}" classifier="sources"/>
		</maven:deploy>
	</target>

<!-- Other targets -->
	<target name="maven.init" depends="ivy.init">
		<ivy:cachepath resolveId="maven.ant.tasks.classpath" pathid="maven.ant.tasks.classpath"
				organisation="org.apache.maven" module="com.springsource.org.apache.maven.ant"
				revision="${org.apache.maven.ant.version}" conf="runtime" type="jar" inline="true" log="download-only"/>
		<taskdef resource="org/apache/maven/artifact/ant/antlib.xml" uri="antlib:org.apache.maven.artifact.ant"
				classpathref="maven.ant.tasks.classpath"/>
		<maven:install-provider groupId="org.springframework.build.aws" artifactId="org.springframework.build.aws.maven"
				version="${org.springframework.build.aws.maven.version}"/>
	</target>

	<target name="create.pom" depends="ivy.init, resolve">
		<delete quiet="true" file="${pom.output.file}"/>
		<mkdir dir="${pom.output.dir}"/>

		<ivy:makepom ivyfile="${ivy.output.file}" pomfile="${pom.output.file}">
			<mapping conf="compile" scope="compile"/>
			<mapping conf="provided" scope="provided"/>
			<mapping conf="dm-server-provided" scope="provided"/>
			<mapping conf="runtime" scope="runtime"/>
			<mapping conf="test" scope="test"/>
		</ivy:makepom>
	</target>

	<target name="snapshot.pom" depends="is.snapshot" if="snapshot.release">
		<replaceregexp flags="g" match="(\d(.\d(.\d)?)?).${build.stamp}" replace="\1.BUILD-SNAPSHOT"
			file="${pom.output.file}"/>
	</target>

	<target name="is.snapshot">
		<condition property="snapshot.release">
			<equals arg1="integration" arg2="${release.type}"/>
		</condition>
	</target>

</project>