<!--/*******************************************************************************
* 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, add ability to override
*                destination URL (to pub elsewhere override ${maven.repo.url})
*     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.0.8.jar" />
    <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant"
             classpathref="maven-ant-tasks.classpath" />

    <!-- "maven dir" defined for later use ensuring only single upload occurs -->
    <property name="maven.repo.dir" value="${eclipselink.root.download.dir}/maven.repo"/>
    <!-- Setup a generic URL variable that can be overridden for publishing to other locations -->
    <property name="maven.repo.url" value="file:///${maven.repo.dir}"/>
    <!-- The default repository where maven artifacts will be uploaded -->
    <artifact:remoteRepository id="eclipselink.repository" url="${maven.repo.url}" />

    <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>

        <property name="target.repository"     value="eclipselink.repository"/>
    </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>

    <target name="upload-static-built-jars" depends="discover-static-built-info">
        <!-- 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) -->
        <antcall target="upload-release-artifact">
            <param name="repo.dir"        value="/${maven.repo.dir}/org/eclipse/persistence/${jpaapi.prefix}/${jpaapi.mvn.version}"/>
            <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>
        <antcall target="upload-release-artifact">
            <param name="repo.dir"        value="/${maven.repo.dir}/org/eclipse/persistence/${sdoapi.prefix}/${sdoapi.mvn.version}"/>
            <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 -->
        <!-- Change back for (and post) release                                                               -->
        <!-- 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">
            <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">
            <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">
            <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>

    <target name="verify-no-exist">
        <available file="${repo.dir}" property="repo.version.exist" type="dir" value="true"/>
        <say message="'${artifactName}' version '${artifactVersion}' already deployed to repository... skipping." if="repo.version.exist"/>
     </target>

    <!-- Uploads a single artifact & source to maven repository only if one doesn't already exist -->
    <target name="upload-release-artifact" unless="repo.version.exist" depends="verify-no-exist, prepare-pom">
        <echo message="Deploying '${artifactName}' version '${artifactVersion}' to repository..."/>
        <!-- Deploy the jar to maven repository along with sources -->
        <artifact:pom id="maven.project" file="pom.xml" />
        <artifact:deploy file="${artifact}">
          <remoteRepository refid="${target.repository}"/>
          <pom refid="maven.project"/>
          <artifact:attach file="${artifactSrc}" classifier="sources"/>
        </artifact:deploy>
        <!-- cleanup -->
        <delete file="pom.xml"/>
    </target>

    <!-- Uploads a single artifact & source to maven repository -->
    <target name="upload-artifact" depends="prepare-pom">
        <!-- Deploy the jar to maven repository along with sources -->
        <artifact:pom id="maven.project" file="pom.xml" />
        <artifact:deploy file="${artifact}">
          <remoteRepository refid="${target.repository}"/>
          <pom refid="maven.project"/>
          <artifact:attach file="${artifactSrc}" classifier="sources"/>
        </artifact:deploy>
        <!-- cleanup -->
        <delete file="pom.xml"/>
    </target>

    <!-- Uploads a single artifact, source & javadoc to maven repository -->
    <target name="upload-artifact-with-javadoc" depends="prepare-pom">
        <!-- Deploy the jar to maven repository along with sources -->
        <artifact:pom id="maven.project" file="pom.xml" />
        <artifact:deploy file="${artifact}">
          <remoteRepository refid="${target.repository}"/>
          <pom refid="maven.project"/>
          <artifact:attach file="${artifactSrc}" classifier="sources"/>
          <artifact:attach file="${artifactJavadoc}" classifier="javadoc"/>
        </artifact:deploy>
        <!-- cleanup -->
        <delete file="pom.xml"/>
    </target>

</project>


