<!--/*******************************************************************************
* 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.0,2.0.100)"/>
        <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 versioning is unique, but will be published under EclipseLink build.      -->
        <!--   OracleDDL is the same                                                            -->
        <!--   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}"/>
        <!-- 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.jpa.equinox"   value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.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.osgi"      value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.osgi${dep.ver}${maven.version}${dep.type}jar${dep.scope}compile${dep.opt}false${dep.foot}"/>
        <property name="dep.jpa.weaving"   value="${dep.grp}org.eclipse.persistence${dep.art}org.eclipse.persistence.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}"/>

        <!-- 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.x 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="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="osgi.dependencies"        value="${deps.head}${dep.jpa}${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}${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">
        <!-- 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}/eclipselink-jpa-modelgen_${version.string}.jar"/>
            <param name="artifactSrc"     value="${maven.2.common.plugins.dir}/eclipselink-jpa-modelgen.source.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="${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.weaving"/>
            <param name="artifactVersion" value="${maven.version}"/>
            <param name="artifact"        value="${maven.2.common.plugins.dir}/org.eclipse.persistence.jpa.equinox.weaving_${version.string}.jar"/>
            <param name="artifactSrc"     value="${maven.2.common.plugins.dir}/org.eclipse.persistence.jpa.equinox.weaving.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="${maven.2.common.plugins.dir}/org.eclipse.persistence.jpa.equinox_${version.string}.jar"/>
            <param name="artifactSrc"     value="${maven.2.common.plugins.dir}/org.eclipse.persistence.jpa.equinox.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.osgi"/>
            <param name="artifactVersion" value="${maven.version}"/>
            <param name="artifact"        value="${maven.2.common.plugins.dir}/org.eclipse.persistence.jpa.osgi_${version.string}.jar"/>
            <param name="artifactSrc"     value="${maven.2.common.plugins.dir}/org.eclipse.persistence.jpa.osgi.source_${version.string}.jar"/>
            <param name="artifactName"    value="EclipseLink OSGi Deployment 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="${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>
    </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>


