blob: 234fca18a4be1827027840e5b87d4608e15f5381 [file] [log] [blame]
<!--/*******************************************************************************
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
* Ant naming conventions:
* - regardless of the actual OS platform,'/' is the directory separator
* (Ant will convert as appropriate).
* - multi-word properties use periods '.'
* - multi-word targets use hyphens '-'
* - multi-word macros use underscores '_'
* - multi-word macro attributes are concatenated
* e.g. 'runpathref'
* - multi-word tasks (taskdef) names are concatenated
* e.g. 'validateconnection'
* - OS environment variables are in ALLCAPS and have 'env' as a prefix
* e.g. ${env.XXX}.
* - Ant properties are lower case.
*
* Contributors:
* mmeswani - initial API and implementation (checked in by tware)
* egwin - updated variables as they have changed in the rest of the system
* updated svnversion to not break build, and default if exec fails
#******************************************************************************/-->
<!-- Variables Needed:
* release.version - need three tokens: Major.Minor.Service
* build.date - in format YYYYMMDD
* build.type - should be set to "SNAPSHOT, "M##", or "RELEASE"
*
*********************************************************************************-->
<project name="Upload EclipseLink artifacts to Maven repository" basedir="." xmlns:artifact="urn:maven-artifact-ant" default="upload-maven-all">
<path id="maven-ant-tasks.classpath" path="${build.deps.dir}/mavenant/maven-ant-tasks-2.0.8.jar" />
<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant"
classpathref="maven-ant-tasks.classpath" />
<!-- The repository where maven artifacts will be uploaded -->
<artifact:remoteRepository id="eclipselink.repository" url="file:///home/data/httpd/download.eclipse.org/rt/eclipselink/maven.repo" />
<target name = "upload-maven-init">
<fail message="Cannot upload to Maven without a release.version defined!" unless="release.version"/>
<fail message="Cannot upload to Maven without a build.date defined!" unless="build.date"/>
<fail message="Cannot upload to Maven without a build.type defined!" unless="build.type"/>
<!-- Get the subversion version for current working copy. A freshly -->
<!-- checked out copy of workspace is guaranteed to not have mixed -->
<!-- revisions -->
<exec outputproperty="svn.revision"
failonerror="false"
failifexecutionfails="false"
errorproperty="svnversion.failed"
executable="svnversion">
<arg line="."/>
</exec>
<property name="svn.revision" value="NA"/>
<!-- fail message="Cannot upload to Maven a build with an unknown revision!" if="svnversion.failed"/ -->
<!-- Set version.string appropriately depending upon build.type and if svn -->
<!-- is present. variable should only be used for uploaded filenames -->
<!-- or manifest entries. -->
<condition property="version.string" value="${release.version}.qualifier"
else="${release.version}.v${build.date}-r${svn.revision}">
<equals arg1="${svn.revision}" arg2="NA"/>
</condition>
<!-- Set maven.version appropriately depending upon ${build.type}. -->
<!-- variable should only be used for maven version element in POM. -->
<condition property="maven.version" value="${release.version}-${build.type}">
<equals arg1="${build.type}" arg2="SNAPSHOT"/>
</condition>
<condition property="maven.version" value="${release.version}">
<equals arg1="${build.type}" arg2="RELEASE"/>
</condition>
<property name="maven.version" value="${release.version}-${build.type}"/>
<echo message="release.version: ${release.version}"/>
<echo message="build.date: ${build.date}"/>
<echo message="build.type: ${build.type}"/>
<echo message="svn.revision: ${svn.revision}"/>
<echo message="version.string: ${version.string}"/>
<echo message="maven.version: ${maven.version}"/>
<!-- Setup static dependency definitions -->
<!-- Would be nice to setup in the beginning, but the library definitions need version.string defined -->
<!-- These need to be used in order -->
<property name="deps.head" value="&lt;dependencies&gt;"/>
<property name="dep.grp" value="&lt;dependency&gt;&lt;groupId&gt;"/>
<property name="dep.art" value="&lt;/groupId&gt;&lt;artifactId&gt;"/>
<property name="dep.ver" value="&lt;/artifactId&gt;&lt;version&gt;"/>
<property name="dep.type" value="&lt;/version&gt;&lt;type&gt;"/>
<property name="dep.scope" value="&lt;/type&gt;&lt;scope&gt;"/>
<property name="dep.opt" value="&lt;/scope&gt;&lt;optional&gt;"/>
<property name="dep.foot" value="&lt;/optional&gt;&lt;/dependency&gt;"/>
<property name="deps.foot" value="&lt;/dependencies&gt;"/>
<!-- These use above, in order, to define a single library for an artifact dependency -->
<property name="dep.antlr" value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.antlr${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.asm" value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.asm${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.dbws" value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.dbws${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.core" value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.core${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.oracle" value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.oracle${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.jpa" value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.jpa${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.jpa.equinox" value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.jpa.equinox${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.jpa.modelgen" value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.jpa.modelgen${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.jpa.processor" value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.jpa.modelgen.processor${dep.ver}${maven.version}${dep.type}jar${dep.scope}runtime${dep.opt}false${dep.foot}"/>
<property name="dep.jpa.weaving" value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.jpa.weaving${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.moxy" value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.moxy${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.sdo" value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.sdo${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.eclipselink" value="${dep.grp}org.eclipse.persistence${dep.art}eclipselink${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.persistence2" value="${dep.grp}org.eclipse.persistence${dep.art}javax.persistence${dep.ver}2.0.0.v200911271158${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.persistence" value="${dep.grp}org.eclipse.persistence${dep.art}javax.persistence${dep.ver}1.0.0.${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<!-- These define the dependency block for a given artifact -->
<!-- * JPA does have a dependency upon javax.persistence, but it is left unstated because while 2.0 functionality -->
<!-- depends upon javax.persistence_2.0.0 jpa 1.0 functionality can run with just javax.persistence_1.0 -->
<!-- * The modelgen processor is a jar containing a single data resource used by the compiler to establish a -->
<!-- canonical modelgen processor during compilation. It has no real dependencies, nor is anything really -->
<!-- dependant upon it, but it is needed for this compiler functionality to work. (think of it as a compiler -->
<!-- add-on). It will need to be downloaded independently for this feature (modelgen) to work. -->
<property name="core.dependencies" value="${deps.head}${dep.asm}${dep.antlr}${deps.foot}"/>
<property name="oracle.dependencies" value="${deps.head}${dep.asm}${dep.core}${deps.foot}"/>
<property name="jpa.dependencies" value="${deps.head}${dep.asm}${dep.core}${deps.foot}"/>
<property name="modelgen.dependencies" value="${deps.head}${dep.core}${dep.jpa}${dep.jpa.processor}${deps.foot}"/>
<property name="weaving.dependencies" value="${deps.head}${dep.jpa}${deps.foot}"/>
<property name="equinox.dependencies" value="${deps.head}${dep.jpa.weaving}${dep.jpa}${deps.foot}"/>
<property name="dbws.dependencies" value="${deps.head}${dep.core}${deps.foot}"/>
<property name="moxy.dependencies" value="${deps.head}${dep.core}${deps.foot}"/>
<property name="sdo.dependencies" value="${deps.head}${dep.moxy}${dep.core}${deps.foot}"/>
</target>
<target name = "upload-maven-all" depends = "upload-maven-init">
<!-- call upload for each artifact we want to upload -->
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="eclipselink"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${eclipselink.jar.name}"/>
<param name="artifactSrc" value="${eclipselink.src.install.prefix}${eclipselink.zip.suffix}"/>
<param name="artifactName" value="EclipseLink (non-OSGi)"/>
<param name="dependencies" value=""/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="javax.persistence"/>
<param name="artifactVersion" value="2.0.0"/>
<param name="artifact" value="${eclipselink.jpa.base}/${plugins.dir}/javax.persistence_2.0.0.v201002051058.jar"/>
<param name="artifactSrc" value="${eclipselink.jpa.base}/${plugins.dir}/javax.persistence.source_2.0.0.v201002051058.jar"/>
<param name="artifactName" value="Javax Persistence API 2.0"/>
<param name="dependencies" value=""/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.antlr"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${eclipselink.plugins}/${eclipselink.antlr.bndl.prefix}_${version.string}.jar"/>
<param name="artifactSrc" value="${eclipselink.plugins}/${eclipselink.antlr.bndl.prefix}.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink ANTLR"/>
<param name="dependencies" value=""/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.asm"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${eclipselink.plugins}/${eclipselink.asm.bndl.prefix}_${version.string}.jar"/>
<param name="artifactSrc" value="${eclipselink.plugins}/${eclipselink.asm.bndl.prefix}.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink ASM"/>
<param name="dependencies" value=""/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.core"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${eclipselink.plugins}/${eclipselink.core.bndl.prefix}_${version.string}.jar"/>
<param name="artifactSrc" value="${eclipselink.plugins}/${eclipselink.core.bndl.prefix}.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink Core"/>
<param name="dependencies" value="${core.dependencies}"/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.oracle"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${eclipselink.plugins}/${eclipselink.oracle.bndl.prefix}_${version.string}.jar"/>
<param name="artifactSrc" value="${eclipselink.plugins}/${eclipselink.oracle.bndl.prefix}.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink Oracle Extensions"/>
<param name="dependencies" value="${oracle.dependencies}"/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.jpa"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${eclipselink.plugins}/${eclipselink.jpa.bndl.prefix}_${version.string}.jar"/>
<param name="artifactSrc" value="${eclipselink.plugins}/${eclipselink.jpa.bndl.prefix}.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink JPA"/>
<param name="dependencies" value="${jpa.dependencies}"/>
</antcall>
<antcall target="upload-artifact-no-src">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.jpa.modelgen.processor"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${eclipselink.plugins}/${eclipselink.processor.bndl.prefix}_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink JPA Modelgen Processor (non-OSGi)"/>
<param name="dependencies" value=""/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.jpa.modelgen"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${eclipselink.plugins}/${eclipselink.modelgen.bndl.prefix}_${version.string}.jar"/>
<param name="artifactSrc" value="${eclipselink.plugins}/${eclipselink.modelgen.bndl.prefix}.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink JPA Modelgen (non-OSGi)"/>
<param name="dependencies" value="${modelgen.dependencies}"/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.weaving"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${eclipselink.plugins}/${eclipselink.weaving.bndl.prefix}_${version.string}.jar"/>
<param name="artifactSrc" value="${eclipselink.plugins}/${eclipselink.weaving.bndl.prefix}.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink JPA Weaving for Equinox Fragment"/>
<param name="dependencies" value="${weaving.dependencies}"/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.equinox"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${eclipselink.plugins}/${eclipselink.equinox.bndl.prefix}_${version.string}.jar"/>
<param name="artifactSrc" value="${eclipselink.plugins}/${eclipselink.equinox.bndl.prefix}.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink JPA Equinox Fragment"/>
<param name="dependencies" value="${equinox.dependencies}"/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.moxy"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${eclipselink.plugins}/${eclipselink.moxy.bndl.prefix}_${version.string}.jar"/>
<param name="artifactSrc" value="${eclipselink.plugins}/${eclipselink.moxy.bndl.prefix}.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink Moxy"/>
<param name="dependencies" value="${moxy.dependencies}"/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.sdo"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${eclipselink.plugins}/${eclipselink.sdo.bndl.prefix}_${version.string}.jar"/>
<param name="artifactSrc" value="${eclipselink.plugins}/${eclipselink.sdo.bndl.prefix}.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink SDO"/>
<param name="dependencies" value="${sdo.dependencies}"/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.dbws"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${eclipselink.plugins}/${eclipselink.dbws.bndl.prefix}_${version.string}.jar"/>
<param name="artifactSrc" value="${eclipselink.plugins}/${eclipselink.dbws.bndl.prefix}.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink DBWS"/>
<param name="dependencies" value="${dbws.dependencies}"/>
</antcall>
</target>
<target name="prepare-pom">
<!-- Copy pom.template to pom.xml filtering various properties -->
<copy file="pom.xml.template" tofile="pom.xml" overwrite="true">
<filterset>
<filter token="groupId" value="${groupId}"/>
<filter token="version" value="${artifactVersion}"/>
<filter token="svn.revision" value="${svn.revision}"/>
<filter token="artifactId" value="${artifactId}"/>
<filter token="artifactName" value="${artifactName}"/>
<filter token="dependencies" value="${dependencies}"/>
</filterset>
</copy>
</target>
<!-- Uploads a single artifact & source to maven repository -->
<target name="upload-artifact" depends="prepare-pom">
<!-- Delploy the jar to maven repository along with sources -->
<artifact:pom id="maven.project" file="pom.xml" />
<artifact:deploy file="${artifact}">
<remoteRepository refid="eclipselink.repository"/>
<pom refid="maven.project"/>
<artifact:attach file="${artifactSrc}" classifier="sources"/>
</artifact:deploy>
<!-- cleanup -->
<delete file="pom.xml"/>
</target>
<!-- Uploads a single artifact without src to maven repository -->
<target name="upload-artifact-no-src" depends="prepare-pom">
<!-- Delploy the jar to maven repository along with sources -->
<artifact:pom id="maven.project" file="pom.xml" />
<artifact:deploy file="${artifact}">
<remoteRepository refid="eclipselink.repository"/>
<pom refid="maven.project"/>
</artifact:deploy>
<!-- cleanup -->
<delete file="pom.xml"/>
</target>
</project>