blob: 2011404313e9aea0f960585669516d3701daa968 [file] [log] [blame] [edit]
<!--/*******************************************************************************
* 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 '.'
* - properties ending in .jar define jarfile names only (no path)
* - properties ending in .lib are fully qualified jars (path and filename)
* - properties ending in .dir are directory paths
* - properties ending in .path are path refid names (classpath fragments)
* - multi-word targets use hyphens '-'
* - targets beginning with test- are reserved for high level test targets,
* and are used in test results parsing
* - targets typically use the form <action>-<object>-<type> (ie. package-bundle-zip)
* - 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
* egwin - updated for publishing to Maven Central, split nexus handling to
* new script
* egwin - converted svn.revision to git.hash (was missed in original
* migration to Git)
#******************************************************************************/-->
<!-- 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"
* git.hash - for stamping pom, to link build with source repo
* Optional variables:
* bundle.dir - if location of bundles to publish isn't a git "view"
*
*********************************************************************************-->
<!-- Build Assumptions:
* running from a "view"
* Needs:
* ${mavenant.dir}/maven-ant-tasks-2.0.8.jar (assumes: ${build.deps.dir}/mavenant)
* build.properties
* ./buildsystem/ant_customizations.jar
*
*********************************************************************************-->
<project name="Upload2Maven" basedir="." xmlns:artifact="urn:maven-artifact-ant" default="upload-maven-all">
<property file="${user.home}/build.properties"/>
<property file="build.properties"/>
<!-- The following properties defined so they can be overridden for testing -->
<property name="mavenant.dir" value="${build.deps.dir}/mavenant"/>
<property name="eclipselink.root.download.dir" value="home/data/httpd/download.eclipse.org/rt/eclipselink"/>
<path id="maven-ant-tasks.classpath" path="${mavenant.dir}/maven-ant-tasks-2.1.3.jar" />
<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant"
classpathref="maven-ant-tasks.classpath" />
<!-- Tool version definitions -->
<property name="gpg.plugin.version" value="1.4"/>
<property name="wagon.http.version" value="2.4"/>
<!-- The repository info of where maven artifacts will be uploaded -->
<!-- Override value to change defaults -->
<property name="stagingId" value="sonatype-nexus-staging"/>
<property name="stagingURL" value="https://oss.sonatype.org/service/local/staging/deploy/maven2"/>
<property name="snapshotId" value="sonatype-nexus-snapshots"/>
<property name="snapshotURL" value="https://oss.sonatype.org/content/repositories/snapshots"/>
<target name="upload-maven-all" depends="upload-eclipselink"/>
<target name="environment-init" if="bundle.dir">
<!-- If "bundle.dir" specified that means that the Push to Maven is occurring from a constructed -->
<!-- dir (expanded zips), rather than directly from a "view" (git repo) dir structure. -->
<property name="maven.2.pojo.dir" value="${bundle.dir}"/>
<property name="maven.2.common.plugins.dir" value="${bundle.dir}"/>
<property name="maven.2.jpa.plugins.dir" value="${bundle.dir}"/>
<property name="maven.2.sdo.plugins.dir" value="${bundle.dir}"/>
<property name="maven.2.util.plugins.dir" value="${bundle.dir}"/>
</target>
<target name="init" depends="environment-init">
<dirname property="maven.build.location_temp" file="${ant.file.Upload2Maven}"/>
<pathconvert targetos="unix" property="maven.build.location">
<path>
<pathelement location="${maven.build.location_temp}"/>
</path>
</pathconvert>
<property file="${user.home}/build.properties"/>
<!-- discover path definitions -->
<property name="maven.2.pojo.dir" value="${maven.build.location}"/>
<property name="maven.2.common.plugins.dir" value="${maven.build.location}/plugins"/>
<property name="maven.2.jpa.plugins.dir" value="${maven.build.location}/jpa/plugins"/>
<property name="maven.2.sdo.plugins.dir" value="${maven.build.location}/sdo/plugins"/>
<property name="maven.2.util.plugins.dir" value="${maven.build.location}/utils/plugins"/>
<property name="maven.2.buildsys.dir" value="${maven.build.location}/buildsystem"/>
<!-- Custom task definitions -->
<property name="custom.tasks.lib" value="${maven.2.buildsys.dir}/ant_customizations.jar"/>
<property name="custom.echo.task.class" value="org.eclipse.persistence.buildtools.ant.taskdefs.Say"/>
<property name="custom.selectbundle.task.class" value="org.eclipse.persistence.buildtools.ant.taskdefs.SelectBundle"/>
<property name="custom.stripqualifier.task.class" value="org.eclipse.persistence.buildtools.ant.taskdefs.StripQualifier"/>
<taskdef name="say" classname="${custom.echo.task.class}" classpath="${custom.tasks.lib}"/>
<taskdef name="selectbundle" classname="${custom.selectbundle.task.class}" classpath="${custom.tasks.lib}"/>
<taskdef name="stripQualifier" classname="${custom.stripqualifier.task.class}" classpath="${custom.tasks.lib}"/>
<echo message="maven.build.location = ${maven.build.location}"/>
<echo message="maven.2.pojo.dir (eclipselink.jar) = ${maven.2.pojo.dir}"/>
<echo message="maven.2.common.plugins.dir (common) = ${maven.2.common.plugins.dir}"/>
<echo message="maven.2.jpa.plugins.dir (JPA-API) = ${maven.2.jpa.plugins.dir}"/>
<echo message="maven.2.sdo.plugins.dir (commonj) = ${maven.2.sdo.plugins.dir}"/>
<echo message="maven.2.util.plugins.dir (DDLparser)= ${maven.2.util.plugins.dir}"/>
<echo message="maven.2.buildsys.dir = ${maven.2.buildsys.dir}"/>
<!-- Defaults for testing, will be previously set on real run -->
<tstamp>
<format property="build.date" pattern="yyyyMMdd"/>
</tstamp>
<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"/>
<fail message="Cannot upload to Maven without 'git.hash' defined!" unless="git.hash"/>
<!-- Set version.string. variable should only be used for uploaded filenames -->
<!-- or manifest entries. -->
<!-- NOTE: Mostly redundant. version.string should already be set. -->
<property name="version.string" value="${release.version}.v${build.date}-${git.hash}"/>
<!-- 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}"
else="${release.version}-${build.type}">
<equals arg1="${build.type}" arg2="RELEASE"/>
</condition>
<echo message="release.version: ${release.version}"/>
<echo message="build.date: ${build.date}"/>
<echo message="build.type: ${build.type}"/>
<echo message="git.hash: ${git.hash}"/>
<echo message="version.string: ${version.string}"/>
<echo message="maven.version: ${maven.version}"/>
<condition property="sign">
<not> <equals arg1="${build.type}" arg2="SNAPSHOT"/> </not>
</condition>
<condition property="target.repo.message" value="Target repository ID: '${stagingId}' URL:'${stagingURL}'"
else="Target repository ID: '${snapshotId}' URL:'${snapshotURL}'">
<isset property="sign"/>
</condition>
<echo message="${target.repo.message}"/>
</target>
<target name="discover-static-built-info" depends="init">
<property name="jpaapi.prefix" value="javax.persistence"/>
<property name="jpaapi.criteria" value="[2.0.100, 2.2)"/>
<property name="jpaapi.name" value="Javax Persistence"/>
<property name="sdoapi.prefix" value="commonj.sdo"/>
<property name="sdoapi.criteria" value="[2.1.1,2.2.0)"/>
<property name="sdoapi.name" value="SDO API"/>
<property name="antlr.prefix" value="org.eclipse.persistence.antlr"/>
<property name="antlr.criteria" value="[3.0.0,4.0.0)"/>
<property name="antlr.name" value="EclipseLink ANTLR"/>
<property name="asm.prefix" value="org.eclipse.persistence.asm"/>
<property name="asm.criteria" value="[3.0.0,4.0.0)"/>
<property name="asm.name" value="EclipseLink ASM"/>
<property name="oracleddl.prefix" value="org.eclipse.persistence.oracleddlparser"/>
<property name="oracleddl.criteria" value="[1.0.0,9.0.0)"/>
<property name="oracleddl.name" value="EclipseLink OracleDDL Parser"/>
<property name="oraclebndl.prefix" value="org.eclipse.persistence.oracle"/>
<property name="oraclebndl.criteria" value="[1.0.0,9.0.0)"/>
<property name="oraclbndl.name" value="EclipseLink Oracle Extensions"/>
<property name="oraclenosql.prefix" value="org.eclipse.persistence.oracle.nosql"/>
<property name="oraclenosql.criteria" value="[1.0.0,9.0.0)"/>
<property name="oraclenosql.name" value="EclipseLink Oracle NoSQL database Extensions"/>
<property name="hermes.prefix" value="org.eclipse.persistence.jpa.jpql"/>
<property name="hermes.criteria" value="[1.0.0,9.0.0)"/>
<property name="hermes.name" value="EclipseLink Hermes JPQL Parser"/>
<selectbundle basename="${jpaapi.prefix}" directory="${maven.2.jpa.plugins.dir}"
criterion="${jpaapi.criteria}" property="jpaapi.version" versiononly="true"
/>
<selectbundle basename="${sdoapi.prefix}" directory="${maven.2.sdo.plugins.dir}"
criterion="${sdoapi.criteria}" property="sdoapi.version" versiononly="true"
/>
<selectbundle basename="${antlr.prefix}" directory="${maven.2.common.plugins.dir}"
criterion="${antlr.criteria}" property="antlr.version" versiononly="true"
/>
<selectbundle basename="${asm.prefix}" directory="${maven.2.common.plugins.dir}"
criterion="${asm.criteria}" property="asm.version" versiononly="true"
/>
<selectbundle basename="${oracleddl.prefix}" directory="${maven.2.util.plugins.dir}"
criterion="${oracleddl.criteria}" property="oracleddl.version" versiononly="true"
/>
<selectbundle basename="${oraclebndl.prefix}" directory="${maven.2.common.plugins.dir}"
criterion="${oraclebndl.criteria}" property="oraclebndl.version" versiononly="true"
/>
<selectbundle basename="${oraclenosql.prefix}" directory="${maven.2.common.plugins.dir}"
criterion="${oraclenosql.criteria}" property="oraclenosql.version" versiononly="true"
/>
<selectbundle basename="${hermes.prefix}" directory="${maven.2.common.plugins.dir}"
criterion="${hermes.criteria}" property="hermes.version" versiononly="true"
/>
<echo message="jpaapi.version = ${jpaapi.version}"/>
<echo message="sdoapi.version = ${sdoapi.version}"/>
<echo message="antlr.version = ${antlr.version}"/>
<echo message="asm.version = ${asm.version}"/>
<echo message="oracleddl.version = ${oracleddl.version}"/>
<echo message="oraclebndl.version = ${oraclebndl.version}"/>
<echo message="oraclenosql.version= ${oraclenosql.version}"/>
<echo message="hermes.version = ${hermes.version}"/>
<!-- Maven standards state we should publish with a stripped down 3-part version rather -->
<!-- than the 4-part OSGi version. So we need to generate "(bundle).mvn.version" from -->
<!-- the discovered "(bundle).version" (after release) -->
<stripQualifier input="${jpaapi.version}" property="jpaapi.mvn.version"/>
<!-- However, if the bundle versioning is such that only the qualifier will change on -->
<!-- a rebuild (convenient for publishing OSGi-ified jars but against OSGi spec) then -->
<!-- we will either violate Maven's "once published, never changes" rule, or newer -->
<!-- bundles will never be published. -->
<!-- NOTE: Decision made to preserve former rather than latter for commonj.sdo, it has -->
<!-- not revved in several years and so is unlikely to do so in future (BD,DT,EG) -->
<stripQualifier input="${sdoapi.version}" property="sdoapi.mvn.version"/>
<!-- In addition these jars are special cases: -->
<!-- Hermes OSGi versioning has changed, so will move into the regular build section -->
<!-- soon. -->
<!-- OracleDDL is expected to follow suit -->
<!-- The Oracle bundles only build periodically, so the bundle version needs to be -->
<!-- 'discovered' but they should be published as part of the build -->
<!-- ANTLR and ASM bundle versions follow the jar it is based upon, and so new builds-->
<!-- only rev the qualifier. However they are uniquely EclipseLink due to the -->
<!-- package renaming, so while the version needs to be 'discovered' for artifact -->
<!-- publishing they will be published under the EclipseLink build version -->
<!-- In addition, in all these listed cases, the artifacts are EclipseLink specific, -->
<!-- and won't be available separately anyway. -->
<say message="jpaapi.mvn.version = ${jpaapi.mvn.version}" if="jpaapi.mvn.version"/>
<say message="sdoapi.mvn.version = ${sdoapi.mvn.version}" if="sdoapi.mvn.version"/>
<say message="jpaapi.mvn.version: Property not set!" unless="jpaapi.mvn.version"/>
<say message="sdoapi.mvn.version: Property not set!" unless="sdoapi.mvn.version"/>
</target>
<target name="upload-maven-init" depends="discover-static-built-info">
<!-- Setup static dependency definitions -->
<!-- Would be nice to setup in the beginning, but the library definitions need version.string defined -->
<!-- Also semi-static OSGi libraries need to use a stripped down 3-part version, rather than the 4-part OSGi version -->
<!-- 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 -->
<!-- Public APIs we depend upon that can be found on Maven Central -->
<!-- Add as nosql dependency -->
<property name="dep.resource" value="${dep.grp}javax.resource${dep.art}connector-api${dep.ver}1.5${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.servlet" value="${dep.grp}javax.servlet${dep.art}servlet-api${dep.ver}2.4${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.wsdl" value="${dep.grp}wsdl4j${dep.art}wsdl4j${dep.ver}1.6.3${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<!-- These are EclipseLink maintained public API bundles so are published under the EclipseLink GroupID, but with their own version info -->
<property name="dep.persistence" value="${dep.grp}org.eclipse.persistence${dep.art}${jpaapi.prefix}${dep.ver}${jpaapi.mvn.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.sdoapi" value="${dep.grp}org.eclipse.persistence${dep.art}${sdoapi.prefix}${dep.ver}${sdoapi.mvn.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<!-- These are EclipseLink jars so will be versioned with the build -->
<property name="dep.antlr" value="${dep.grp}org.eclipse.persistence${dep.art}${antlr.prefix}${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}${asm.prefix}${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.hermes" value="${dep.grp}org.eclipse.persistence${dep.art}${hermes.prefix}${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}${oraclebndl.prefix}${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
<property name="dep.nosql" value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.nosql${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.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.oracleddl" value="${dep.grp}org.eclipse.persistence${dep.art}${oracleddl.prefix}${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}"/>
<!-- These define the dependency block for a given artifact -->
<!-- * 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="eclipselink.dependencies" value="${deps.head}${dep.persistence}${dep.sdoapi}${deps.foot}"/> <!-- would need the modelgen.jar for modelgen but cannot include dep -->
<property name="jpql.dependencies" value="${deps.head}${dep.hermes}${deps.foot}"/>
<property name="core.dependencies" value="${deps.head}${dep.asm}${deps.foot}"/>
<property name="oracle.dependencies" value="${deps.head}${dep.persistence}${dep.asm}${dep.core}${deps.foot}"/>
<property name="jpa.dependencies" value="${deps.head}${dep.persistence}${dep.asm}${dep.antlr}${dep.hermes}${dep.core}${deps.foot}"/>
<property name="nosql.dependencies" value="${deps.head}${dep.resource}${dep.persistence}${dep.asm}${dep.antlr}${dep.hermes}${dep.core}${deps.foot}"/>
<property name="ora.nosql.dependencies" value="${deps.head}${dep.nosql}${deps.foot}"/>
<property name="modelgen.dependencies" value="${deps.head}${dep.core}${dep.jpa}${deps.foot}"/>
<property name="dbws.dependencies" value="${deps.head}${dep.core}${deps.foot}"/>
<property name="builder.dependencies" value="${deps.head}${dep.core}${dep.dbws}${dep.moxy}${dep.jpa}${dep.nosql}${dep.oracle}${dep.servlet}${dep.wsdl}${dep.oracleddl}${deps.foot}"/>
<property name="moxy.dependencies" value="${deps.head}${dep.core}${dep.antlr}${deps.foot}"/>
<property name="sdo.dependencies" value="${deps.head}${dep.sdoapi}${dep.moxy}${dep.core}${deps.foot}"/>
</target>
<!-- Nexus typicaly is configured to disallow uploads of already published versions (non-snapshot) -->
<!-- Aditionally Sonatype is configured to disallow publishing of non-snapshot versions to the -->
<!-- snapshot server (400 error). Therefore Moving the JPA "snapshot" upload to the regular upload -->
<!-- section, and setting this target to conditionally only run if not a build.type of SNAPSHOT, -->
<!-- and fix it so these uploads won't cause a build failure on Error (already uploaded) -->
<target name="upload-static-built-jars" if="sign" depends="discover-static-built-info">
<!-- Removed "upload-release-artifact" because it depended upon filesystem access. See below. -->
<!-- repo.dir and artifactId should be (bundle).mvn.version from (bundle).version -->
<!-- (rather than the 4-part OSGi version, we use a stripped down 3-part version) -->
<echo message="Skipping upload of static artifacts to Nexus..."/>
<!-- antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="${jpaapi.prefix}"/>
<param name="artifactVersion" value="${jpaapi.mvn.version}"/>
<param name="artifact" value="${maven.2.jpa.plugins.dir}/${jpaapi.prefix}_${jpaapi.version}.jar"/>
<param name="artifactSrc" value="${maven.2.jpa.plugins.dir}/${jpaapi.prefix}.source_${jpaapi.version}.jar"/>
<param name="artifactName" value="${jpaapi.name}"/>
<param name="dependencies" value=""/>
</antcall -->
<!-- Removed "upload-release-artifact" because it depended upon filesystem access. See below. -->
<!-- antcall target="upload-release-artifact" -->
<!-- antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="${sdoapi.prefix}"/>
<param name="artifactVersion" value="${sdoapi.mvn.version}"/>
<param name="artifact" value="${maven.2.sdo.plugins.dir}/${sdoapi.prefix}_${sdoapi.version}.jar"/>
<param name="artifactSrc" value="${maven.2.sdo.plugins.dir}/${sdoapi.prefix}.source_${sdoapi.version}.jar"/>
<param name="artifactName" value="${sdoapi.name}"/>
<param name="dependencies" value=""/>
</antcall -->
</target>
<target name="upload-eclipselink" depends="upload-maven-init,upload-static-built-jars">
<!-- While JPA is pre-release use "upload-artifact" with fixed up 2.1.0-(EL ${build.type}) as version -->
<!-- Changed back (commented out) for post-release builds -->
<!-- antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="${jpaapi.prefix}"/>
<param name="artifactVersion" value="${jpaapi.mvn.version}"/>
<param name="artifact" value="${maven.2.jpa.plugins.dir}/${jpaapi.prefix}_${jpaapi.version}.jar"/>
<param name="artifactSrc" value="${maven.2.jpa.plugins.dir}/${jpaapi.prefix}.source_${jpaapi.version}.jar"/>
<param name="artifactName" value="${jpaapi.name}"/>
<param name="dependencies" value=""/>
</antcall -->
<!-- call upload for each artifact we want to upload -->
<antcall target="upload-artifact-with-javadoc">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="eclipselink"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${maven.2.pojo.dir}/eclipselink.jar"/>
<param name="artifactSrc" value="${maven.2.pojo.dir}/eclipselink-src.zip"/>
<param name="artifactJavadoc" value="${maven.2.pojo.dir}/eclipselink-javadocs.zip"/>
<param name="artifactName" value="EclipseLink (non-OSGi)"/>
<param name="dependencies" value="${eclipselink.dependencies}"/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="${hermes.prefix}"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${maven.2.common.plugins.dir}/${hermes.prefix}_${hermes.version}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/${hermes.prefix}.source_${hermes.version}.jar"/>
<param name="artifactName" value="${hermes.name}"/>
<param name="dependencies" value=""/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="${antlr.prefix}"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${maven.2.common.plugins.dir}/${antlr.prefix}_${antlr.version}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/${antlr.prefix}.source_${antlr.version}.jar"/>
<param name="artifactName" value="${antlr.name}"/>
<param name="dependencies" value=""/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="${asm.prefix}"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${maven.2.common.plugins.dir}/${asm.prefix}_${asm.version}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/${asm.prefix}.source_${asm.version}.jar"/>
<param name="artifactName" value="${asm.name}"/>
<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="${maven.2.common.plugins.dir}/org.eclipse.persistence.core_${version.string}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.core.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="${oraclebndl.prefix}"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${maven.2.common.plugins.dir}/${oraclebndl.prefix}_${oraclebndl.version}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/${oraclebndl.prefix}.source_${oraclebndl.version}.jar"/>
<param name="artifactName" value="${oraclebndl.name}"/>
<param name="dependencies" value="${oracle.dependencies}"/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="${oraclenosql.prefix}"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${maven.2.common.plugins.dir}/${oraclenosql.prefix}_${oraclenosql.version}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/${oraclenosql.prefix}.source_${oraclenosql.version}.jar"/>
<param name="artifactJavadoc" value="${maven.2.pojo.dir}/nosql-javadocs.zip"/>
<param name="artifactName" value="${oraclenosql.name}"/>
<param name="dependencies" value="${ora.nosql.dependencies}"/>
</antcall>
<antcall target="upload-artifact-with-javadoc">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.nosql"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.nosql_${version.string}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.nosql.source_${version.string}.jar"/>
<param name="artifactJavadoc" value="${maven.2.pojo.dir}/nosql-javadocs.zip"/>
<param name="artifactName" value="EclipseLink NoSQL database Extensions"/>
<param name="dependencies" value="${nosql.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="${maven.2.common.plugins.dir}/org.eclipse.persistence.jpa_${version.string}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.jpa.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink JPA"/>
<param name="dependencies" value="${jpa.dependencies}"/>
</antcall>
<antcall target="upload-artifact-with-javadoc">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.jpars"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.jpars_${version.string}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.jpars.source_${version.string}.jar"/>
<param name="artifactJavadoc" value="${maven.2.pojo.dir}/eclipselink-jpars-javadocs.zip"/>
<param name="artifactName" value="EclipseLink JPA-RS"/>
<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.processor"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.jpa.modelgen_${version.string}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.jpa.modelgen.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.moxy"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.moxy_${version.string}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.moxy.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="${maven.2.common.plugins.dir}/org.eclipse.persistence.sdo_${version.string}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.sdo.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="${maven.2.common.plugins.dir}/org.eclipse.persistence.dbws_${version.string}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.dbws.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink DBWS"/>
<param name="dependencies" value="${dbws.dependencies}"/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="${oracleddl.prefix}"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${maven.2.util.plugins.dir}/${oracleddl.prefix}_${oracleddl.version}.jar"/>
<param name="artifactSrc" value="${maven.2.util.plugins.dir}/${oracleddl.prefix}.source_${oracleddl.version}.jar"/>
<param name="artifactName" value="${oracleddl.name}"/>
<param name="dependencies" value=""/>
</antcall>
<antcall target="upload-artifact">
<param name="groupId" value="org.eclipse.persistence"/>
<param name="artifactId" value="org.eclipse.persistence.dbws.builder"/>
<param name="artifactVersion" value="${maven.version}"/>
<param name="artifact" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.dbws.builder_${version.string}.jar"/>
<param name="artifactSrc" value="${maven.2.common.plugins.dir}/org.eclipse.persistence.dbws.builder.source_${version.string}.jar"/>
<param name="artifactName" value="EclipseLink DBWS Builder"/>
<param name="dependencies" value="${builder.dependencies}"/>
</antcall>
</target>
<!-- Generic targets to do the Maven work -->
<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="git.hash" value="${git.hash}"/>
<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 only if one doesn't already exist -->
<!-- Removed "upload-release-artifact" because it depended upon filesystem access. Need a mechanism -->
<!-- to verify an artifact is already uploaded to Nexus server. For now, am hoping nexus is smart enough -->
<!-- to refuse redeployment. (Not hopeful though, seems too restrictive). -->
<!-- Uploads a single artifact & source to maven repository -->
<target name="upload-artifact" depends="prepare-pom, ua-snapshot, ua-staging, us-staging">
<!-- cleanup -->
<delete file="pom.xml"/>
</target>
<target name="ua-snapshot" unless="sign">
<!-- Install provider for https protocol -->
<artifact:install-provider artifactId="wagon-http" version="${wagon.http.version}"/>
<!-- Deploy Artifact to repote repo, attach source -->
<artifact:deploy file="${artifact}">
<artifact:remoteRepository id="${snapshotId}" url="${snapshotURL}" />
<artifact:pom id="maven.project" file="pom.xml" />
<artifact:attach file="${artifactSrc}" classifier="sources"/>
</artifact:deploy>
</target>
<!-- Uploads a single artifact, source & javadoc to maven repository -->
<target name="upload-artifact-with-javadoc" depends="prepare-pom, uawj-snapshot, ua-staging, us-staging, uj-staging">
<!-- cleanup -->
<delete file="pom.xml"/>
</target>
<target name="uawj-snapshot" unless="sign">
<!-- Install provider for https protocol -->
<artifact:install-provider artifactId="wagon-http" version="${wagon.http.version}"/>
<!-- Deploy Artifact to repote repo, attach source and javadoc -->
<artifact:deploy file="${artifact}">
<artifact:remoteRepository id="${snapshotId}" url="${snapshotURL}"/>
<artifact:pom id="maven.project" file="pom.xml" />
<artifact:attach file="${artifactSrc}" type="jar" classifier="sources"/>
<artifact:attach file="${artifactJavadoc}" type="zip" classifier="javadoc"/>
</artifact:deploy>
</target>
<!-- Staging targets -->
<target name="ua-staging" if="sign">
<!-- sign and deploy the main artifact -->
<artifact:mvn>
<arg value="org.apache.maven.plugins:maven-gpg-plugin:${gpg.plugin.version}:sign-and-deploy-file"/>
<arg value="-Durl=${stagingURL}"/>
<arg value="-DrepositoryId=${stagingId}"/>
<arg value="-DpomFile=${maven.build.location}/pom.xml"/>
<arg value="-Dfile=${artifact}"/>
<arg value="-Pgpg"/>
</artifact:mvn>
</target>
<target name="us-staging" if="sign">
<!-- sign and deploy the sources artifact -->
<artifact:mvn>
<arg value="org.apache.maven.plugins:maven-gpg-plugin:${gpg.plugin.version}:sign-and-deploy-file"/>
<arg value="-Durl=${stagingURL}"/>
<arg value="-DrepositoryId=${stagingId}"/>
<arg value="-DpomFile=${maven.build.location}/pom.xml"/>
<arg value="-Dfile=${artifactSrc}"/>
<arg value="-Dclassifier=sources"/>
<arg value="-Pgpg"/>
</artifact:mvn>
</target>
<target name="uj-staging" if="sign">
<!-- sign and deploy the javadoc artifact -->
<artifact:mvn>
<arg value="org.apache.maven.plugins:maven-gpg-plugin:${gpg.plugin.version}:sign-and-deploy-file"/>
<arg value="-Durl=${stagingURL}"/>
<arg value="-DrepositoryId=${stagingId}"/>
<arg value="-DpomFile=${maven.build.location}/pom.xml"/>
<arg value="-Dfile=${artifactJavadoc}"/>
<arg value="-Dclassifier=javadoc"/>
<arg value="-Pgpg"/>
</artifact:mvn>
</target>
<!-- ************************************* NOT USED **************************************** -->
<!-- Manual signing would look something like this (not commented out due to double dashes): -->
<target name="sign-artifact">
<echo message="Using gpg to sign '${artifactPath}'..."/>
<exec executable="gpg" failonerror="false" logError="true">
<arg value="-u ${keyID}"/>
<arg value="--sign"/>
<arg value="--detach-sign"/>
<arg value="-a ${artifactPath}"/>
</exec>
</target>
<!-- But the need to expose the key ID and somehow pass on the passphrase in the script is a major issue
Signing and deployment would be called like this:
-->
<target name="uawj-staging" unless="sign">
<!-- GPG signing calls: -->
<antcall target="sign-artifact">
<param name="artifactPath" value="${artifact}"/>
</antcall>
<antcall target="sign-artifact">
<param name="artifactPath" value="${artifactSrc}"/>
</antcall>
<antcall target="sign-artifact">
<param name="artifactPath" value="${artifactJavadoc}"/>
</antcall>
<!-- Deployment would then look something like: -->
<artifact:deploy file="${artifact}">
<artifact:remoteRepository id="${stagingId}" url="${stagingURL}"/>
<artifact:pom id="maven.project" file="pom.xml" />
<artifact:attach file="${artifact}.asc" type="asc" classifier="all???"/>
<artifact:attach file="${artifactSrc}" type="jar" classifier="sources"/>
<artifact:attach file="${artifactSrc}.asc" type="asc" classifier="all"/>
<artifact:attach file="${artifactJavadoc}" type="zip" classifier="javadoc"/>
<artifact:attach file="${artifactJavadoc}.asc" type="asc" classifier="all"/>
</artifact:deploy>
</target>
</project>