<!--

    Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0 which is available at
    http://www.eclipse.org/legal/epl-2.0,
    or the Eclipse Distribution License v. 1.0 which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause

-->

<!--
  Contributors:
      eric.gwin - initial API and implementation (checked in by Tware)
-->
<!-- =============================================================================
*  General Comments
*  Publishing commands needed to move exported nightly build artifacts, to Download
*  Also includes milestone promotion tasks at the bottom.
*================================================================================= -->
<!--
*   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.
-->
<project name="publish" basedir="." default="publish">
    <dirname  property="build.location_temp" file="${ant.file.publish}"/>
    <pathconvert targetos="unix" property="build.location">
        <path>
            <pathelement location="${build.location_temp}"/>
        </path>
    </pathconvert>
    <echo message="build.location = '${build.location}'"/>

    <!-- Define custom task to "cleanup" the revision information -->
    <property name="custom.tasks.lib" value="${build.location}/buildsystem/ant_customizations.jar"/>
    <!-- property name="custom.cleanrev.task.class" value="org.eclipse.persistence.buildtools.ant.taskdefs.CleanRevision"/ -->
    <property name="custom.echo.task.class" value="org.eclipse.persistence.buildtools.ant.taskdefs.Say"/>
    <available file="${custom.tasks.lib}" property="ant_customizations.exist"/>
    <fail unless="ant_customizations.exist" message="Cannot find custom tasks library: '${custom.tasks.lib}' directory"/>
    <!-- taskdef  name="cleanRevision" classname="${custom.cleanrev.task.class}" classpath="${custom.tasks.lib}"/ -->
    <taskdef  name="say"           classname="${custom.echo.task.class}"     classpath="${custom.tasks.lib}"/>

    <target name="build-milestone"  description="Trigger build, testing, and publishing of a milestone release ('release' is a milestone in this case)"
            depends="promote-init, sign-and-wait, regen-archives, publish-milestone, create-tag"
    />
    <target name="init" depends="pre-init, common-init"/>
<!--
publish would need:

variables setup by handoff file"
   qualifier (date and hash)
   branch
   proc (build or test)
   location of exported archives (path)
access to maven.xml script
access to features progect/script
access to eclipse install (knowledge of blddeps default)

-->

    <target name="pre-init">
        <tstamp>
            <format property="run.date" pattern="yyyyMMdd"/>
            <format property="run.time" pattern="HHmm"/>
        </tstamp>
        <!-- build.type should default to "SNAPSHOT, unless it is set to "M#"    -->
        <!--   or "RELEASE" on the command-line for milestone or release builds  -->
        <property name="build.type" value="SNAPSHOT"/>

        <!-- Set version.qualifier appropriately. variable should only be used    -->
        <!--    for uploaded filenames  or manifest entries.                      -->
        <condition property="version.qualifier" value="qualifier"
                                                else="v${build.date}-${git.hash}"> <!--r${svn.revision}" -->
            <equals arg1="${git.hash}" arg2="NA"/>
        </condition>
    </target>

    <target name="common-init">
        <!-- M2_HOME defaults the value maven 3.0.3 install location on the build  -->
        <!--   server, this is brittle, but easier for now                         -->
        <property name="M2_HOME" value="/shared/common/apache-maven-3.0.3"/>
        <echo message="'M2_HOME' set to: '${M2_HOME}'"/>

        <property file="${basedir}/autobuild.properties"/>

        <!-- Set version.string appropriately. variable should only be used for   -->
        <!--    uploaded filenames  or manifest entries.                          -->
        <property name="version.string" value="${release.version}.${version.qualifier}"/>

        <!-- Set extract.dir appropriately for this build                         -->
        <property name="extract.dir" value="${build.tool.root}/exported_builds/${release.version}/${version.qualifier}"/>

        <!-- For signed archive name need "version.string" defined first -->
        <property name="p2.archive.presigned.zip" value="eclipselink-P2-${version.string}.zip"/>
        <property name="p2.archive.signed.zip"    value="eclipselink-P2signed-${version.string}.zip"/>

        <!-- generate Release Designation string for manifest                     -->
        <property name="release.designation" value="EclipseLink ${release.version}"/>

        <!-- Now that all our overrides are complete, pull in the rest of the build properties -->
        <property file="${build.location}/antbuild.properties"/>

        <echo message="ANT_ARGS='${env.ANT_ARGS}'"/>
        <echo message="ANT_OPTS='${env.ANT_OPTS}'"/>
        <echo message=" "/>
        <echo message="env.JAVA_HOME   = '${env.JAVA_HOME}'"/>
        <echo message="env.ANT_HOME    = '${env.ANT_HOME}'"/>
        <echo message="env.JUNIT_HOME  = '${env.JUNIT_HOME}'"/>
        <echo message="env.MAVENANT_DIR= '${env.MAVENANT_DIR}'"/>
        <echo message="env.PATH        = '${env.PATH}'"/>
        <echo message="env.CLASSPATH   = '${env.CLASSPATH}'"/>
        <echo message="env.GIT_EXEC    = '${env.GIT_EXEC}'"/>
        <echo message="env.TARGET      = '${env.TARGET}'"/>
        <echo message=" "/>
        <echo message="builddate.buildtime='${build.date}.${build.time}'"/>
        <echo message="java.version   ='${java.version}'"/>
        <echo message="os.name        ='${os.name}'"/>
        <echo message="os.arch        ='${os.arch}'"/>
        <echo message="os.version     ='${os.version}'"/>
        <echo message=" "/>
        <echo message="branch.name     ='${branch.name}'"/>
        <echo message="branch          ='${branch}'"/>
        <echo message="basedir         ='${basedir}'"/>
        <echo message="build.deps.dir  ='${build.deps.dir}'"/>
        <echo message="build.location  ='${build.location}'"/>
        <echo message="build.tool.root ='${build.tool.root}'"/>
        <echo message="hudson.workspace='${hudson.workspace}'"/>
        <echo message="extract.dir     ='${extract.dir}'"/>
        <echo message="log.dir         ='${log.dir}'"/>
        <echo message="junit.dir       ='${junit.dir}'"/>
        <echo message="junit.lib       ='${junit.lib}'"/>
        <echo message=" "/>
        <echo message="git.exec       ='${git.exec}'"/>
        <echo message=" "/>
        <echo message="EL version     ='${release.version}'"/>
        <echo message="build.type     ='${build.type}'"/>
        <echo message="version.string ='${version.string}'"/>
        <echo message="build.number   ='${build.date}'"/>
        <echo message="git.hash       ='${git.hash}'"/>
        <echo message=" "/>
        <echo message="jdbc.driver.jar='${jdbc.driver.jar}'"/>
        <echo message="db.driver      ='${db.driver}'"/>
        <echo message="db.url         ='${db.url}'"/>
        <echo message="db.user        ='${db.user}'"/>
        <echo message="db.pwd         ='${db.pwd}'"/>
        <echo message="db.platform    ='${db.platform}'"/>
    </target>

    <!--  =====  #####              Publishing Targets               #####  =====  -->

    <target name="publish-init" depends="common-init">
        <!-- Set download.dir appropriately depending upon build target          -->
        <condition property="download.dir" value="${eclipselink.root.download.dir}/nightly/${release.version}/${build.date}">
            <equals arg1="${build.type}" arg2="SNAPSHOT"/>
        </condition>
        <condition property="download.dir" value="${eclipselink.root.download.dir}/releases/${release.version}">
            <equals arg1="${build.type}" arg2="RELEASE"/>
        </condition>
        <property name="download.dir" value="${eclipselink.root.download.dir}/milestones/${release.version}/${build.type}"/>

        <!-- Set p2 repository path appropriately depending upon build target     -->
        <condition property="p2.composite.root.dir" value="${eclipselink.root.download.dir}/nightly-updates">
            <equals arg1="${build.type}" arg2="SNAPSHOT"/>
        </condition>
        <condition property="p2.composite.root.dir" value="${eclipselink.root.download.dir}/updates">
            <equals arg1="${build.type}" arg2="RELEASE"/>
        </condition>
        <property name="p2.composite.root.dir" value="${eclipselink.root.download.dir}/milestone-updates"/>
        <condition property="p2.repos.dir" value="${p2.composite.root.dir}/${version.string}">
            <equals arg1="${build.type}" arg2="SNAPSHOT"/>
        </condition>
        <condition property="p2.repos.dir" value="${p2.composite.root.dir}/${version.string}">
            <equals arg1="${build.type}" arg2="RELEASE"/>
        </condition>
        <property name="p2.repos.dir" value="${p2.composite.root.dir}/${version.string}_${build.type}"/>

        <!-- generate Release Designation string for manifest                     -->
        <property name="release.designation" value="EclipseLink ${release.version}"/>
        <!-- specify location of eclipse SDK install to use                       -->
        <property name="p2.SDK.install.dir"  value="${build.deps.dir}/eclipse"/>
        <!-- verify location of eclipse SDK install exists before proceeding...   -->
        <available file="${p2.SDK.install.dir}" type="dir" property="p2.SDK.install.dir.exist"/>
        <fail message="${p2.SDK.install.dir} dir not found. Build will fail, aborting now." unless="p2.SDK.install.dir.exist"/>

        <!-- generate P2 repository labels                                        -->
        <condition property="metadata.repos.name" value="&quot;${p2.nightly.repos.name}&quot;">
            <equals arg1="${build.type}" arg2="SNAPSHOT"/>
        </condition>
        <condition property="metadata.repos.name" value="&quot;${p2.release.repos.name}&quot;">
            <equals arg1="${build.type}" arg2="RELEASE"/>
        </condition>
        <property name="metadata.repos.name" value="&quot;${p2.milestone.repos.name}&quot;"/>

        <condition property="artifact.repos.name" value="&quot;EclipseLink Incremental Artifacts&quot;">
            <equals arg1="${build.type}" arg2="SNAPSHOT"/>
        </condition>
        <condition property="artifact.repos.name" value="&quot;EclipseLink Release Artifacts&quot;">
            <equals arg1="${build.type}" arg2="RELEASE"/>
        </condition>
        <property name="artifact.repos.name" value="&quot;EclipseLink Milestone Artifacts&quot;"/>

        <!-- generate string for tag creation (only used if milestone, or release build)  -->
        <condition property="milestone.tag" value="${release.version}">
            <equals arg1="${build.type}" arg2="RELEASE"/>
        </condition>
        <property name="milestone.tag" value="${release.version}-${build.type}"/>

        <echo message="download.dir         ='${download.dir}'"/>
        <echo message="p2.composite.root.dir='${p2.composite.root.dir}'"/>
        <echo message="p2.repos.dir         ='${p2.repos.dir}'"/>
        <echo message="release.designation  ='${release.designation}'"/>
        <echo message="p2.SDK.install.dir   ='${p2.SDK.install.dir}'"/>
        <echo message="metadata.repos.name  ='${metadata.repos.name}'"/>
        <echo message="artifact.repos.name  ='${artifact.repos.name}'"/>
        <echo message="milestone.tag        ='${milestone.tag}'"/>
    </target>

    <!--  =====  Build Publish Targets -->
    <target name="publish-build" depends="publish-init, publish-artifacts, publish-maven, publish-p2-site, publish-SonatypeOSS, cleanup-old-builds"/>
    <target name="publish-artifacts">
        <!-- New Publish Architecture -->
        <mkdir dir="${download.dir}"/>
        <copy todir="${download.dir}" failonerror="false">
            <fileset  dir="${build.root.dir}">
                <include name="*.${eclipselink.zip.suffix}"/>
            </fileset>
        </copy>
    </target>

    <target name="publish-maven" depends="init">
        <ant antfile="uploadToMaven.xml" dir="${build.root.dir}" target="upload-maven-all"/>
    </target>

    <target name="publish-SonatypeOSS" depends="init">
        <ant antfile="uploadToSonatypeOSS.xml" dir="${build.root.dir}" target="upload-maven-all"/>
    </target>

    <target name="publish-p2-site" depends="fix-permission">
        <!-- has to be run after publish, so it can be generic for nightly, or milestone builds -->
        <condition property="p2.archive.to.use" value="${build.root.dir}/features/${p2.archive.presigned.zip}"
                                                 else="${download.dir}/${p2.archive.signed.zip}">
            <equals arg1="${build.type}" arg2="SNAPSHOT"/>
        </condition>
        <!-- Clean existing repos if it exists (should only be true of a release redo, or the latest milestone or nightly) -->
        <delete dir="${p2.repos.dir}" failonerror="false"/>
        <mkdir dir="${p2.repos.dir}"/>
        <!-- populate update site with feature and bundle jars, then publish repository -->
        <ant antfile="antbuild.xml" dir="${build.root.dir}/features" target="assemble-repos">
            <property name="do.composite"        value="true"/>
            <property name="ready-to-go"         value="true"/>
            <property name="bundle.install.file" value="${download.dir}/${eclipselink.plugins.install.prefix}-${version.string}${eclipselink.zip.suffix}"/>
            <property name="nosql.install.file"  value="${download.dir}/${eclipselink.nosql.install.prefix}-${version.string}${eclipselink.zip.suffix}"/>
            <property name="p2.archive.zip"      value="${p2.archive.to.use}"/>
        </ant>
        <!-- Regenerate Composite Repos metadata -->
        <echo message="p2.composite.root.dir = '${p2.composite.root.dir}'"/>
        <echo message="metadata.repos.name   = '${metadata.repos.name}'"/>
        <exec executable="/bin/sh" failonerror="false" logError="true" >
            <arg value="${build.root.dir}/buildsystem/buildCompositeP2.sh"/>
            <arg value="${p2.composite.root.dir}"/>
            <arg value="${metadata.repos.name}"/>
        </exec>
        <!-- Can clean-up temp dir now -->
        <delete dir="${temp.rebuild.dir}" failonerror="false"/>
    </target>

    <!-- Antified "cleanNightly.sh" -->
    <target name="cleanup-old-builds" depends="fix-permission">
        <exec executable="/bin/sh" failonerror="true" logError="true" >
            <arg value="${build.root.dir}/buildsystem/cleanNightly.sh"/>
        </exec>
    </target>

    <!--  =====  Test Publish Targets -->
    <target name="cannot-publish-tests" unless="host" depends="init">
        <fail message="'host' is not set. Cannot initiate publication of test results!"/>
    </target>
    <target name="publish-tests" if="host" depends="cannot-publish-tests">
        <!-- New Publish Architecture -->
        <property name="host.dir" value="${download.dir}/${host}"/>
        <mkdir dir="${host.dir}"/>
        <copy todir="${host.dir}" failonerror="false">
            <fileset  dir="${build.root.dir}">
                <include name="*.*"/>
            </fileset>
        </copy>
        <!-- Remove any old results summary file, if it exists -->
        <delete file="${host.dir}/ResultsSummary.dat" failonerror="false"/>
        <!-- Run gen summary dat script -->
    </target>

    <target name="fix-permission">
        <chmod perm="ug+x">
            <fileset dir="${build.root.dir}/buildsystem">
                <include name="*.sh"/>
            </fileset>
        </chmod>
    </target>


    <!--  =====  #####              Milestone Targets               #####  =====  -->

    <target name="cleanup-signing-dir">
        <delete failonerror="false">
            <fileset dir="${signing.dir}" includes="**/*.zip"/>
        </delete>
    </target>

    <target name="sign-and-wait" unless="signed.archive.exist" depends="promote-init">
        <echo message="Proceeding with signing of unsigned archive..."/>
        <ant antfile="antbuild.xml" dir="${build.root.dir}/features" target="sign-jars">
            <property name="signing.script"  value="sign"/>
            <property name="signed.archive.src.file"   value="${promote.archive.unsigned.lib}"/>
            <property name="signed.archive.dest.file"  value="${promote.archive.signed.lib}"/>
        </ant>
        <available file="${download.dir}/${p2.archive.signed.zip}" property="signed.archive.exist"/>
    </target>

    <target name="create-tag">
        <echo message="Create a tag (${milestone.tag}) of this revision (${svn.revision}) for this milestone (${build.type})"/>
        <echo message="   ${svn.branch.url} = ${svn.branch.url}"/>
        <echo message="   ${svn.base.url}   = ${svn.base.url}"/>
        <echo message="   "/>
        <echo message="${svn.exec} copy -r ${svn.revision} \\"/>
        <echo message="            ${svn.branch.url} \\"/>
        <echo message="            ${svn.base.url}/tags/${milestone.tag} \\"/>
        <echo message="            -m 'Create ${milestone.tag} Tag for ${version.string}'"/>
        <exec executable="${svn.exec}" failonerror="false" logError="true">
            <arg line="copy"/>
            <arg line="-r ${svn.revision}"/>
            <arg line="${svn.branch.url}"/>
            <arg line="${svn.base.url}/tags/${milestone.tag}"/>
            <arg line="-m 'Create ${milestone.tag} Tag for ${version.string}'"/>
        </exec>
    </target>

    <target name="promote-pre-init">
        <!-- svn.revision and build.time should already be set to the svn revision number and build date of the -->
        <!-- build being promoted - however, build.time is undefined (it is currently unused)                   -->
        <fail unless="svn.revision" message="svn.revision doesn't exist and it should before we reach this point!"/>
        <fail unless="build.date" message="build.date doesn't exist and it should before we reach this point!"/>
        <!-- build.type should be set to "M#" or "RELEASE" on the command-line for milestone or release builds  -->
        <fail unless="build.type" message="build.type doesn't exist and it should before we reach this point!"/>
        <tstamp>
            <format property="promote.date" pattern="MMM dd, yyyy"/>
            <format property="run.date" pattern="yyyyMMdd"/>
            <format property="run.time" pattern="HHmm"/>
        </tstamp>
        <property name="commit.hash.cmd" value="${git.exec} log -1 --format=%h"/>
        <!-- property name="version.qualifier" value="v${build.date}-{commit.hash}"/ -->
        <property name="version.qualifier" value="v${build.date}-r${svn.revision}"/>
    </target>

    <target name="promote-init" depends="promote-pre-init, common-init">
        <!-- This depends upon freezing nightly builds after an RC# build otherwise the nightly to be -->
        <!-- promoted to a 'RELEASE' build (same as last milestone) could expire off the nightly site   -->
        <property name="promote.source.dir"           value="${eclipselink.root.download.dir}/nightly/${release.version}/${build.date}"/>
        <property name="promote.archive.unsigned.lib" value="${promote.source.dir}/${p2.archive.presigned.zip}"/>
        <property name="promote.archive.signed.lib"   value="${promote.source.dir}/${p2.archive.signed.zip}"/>
        <available file="${promote.source.dir}"           property="promote.source.exist" type="dir"/>
        <available file="${promote.archive.unsigned.lib}" property="unsigned.archive.exist"/>
        <available file="${promote.archive.signed.lib}"   property="signed.archive.exist"/>
        <condition property="archive.exist">
            <or>
                <isset property="unsigned.archive.exist"/>
                <isset property="signed.archive.exist"/>
            </or>
        </condition>
        <!-- FAIL THIS PROMOTION if the source build is not found                                       -->
        <fail unless="promote.source.exist"     message="${promote.source.dir} not found! Cannot promote this build."/>
        <!-- Log status of signing archive for build                                                    -->
        <say message="${download.dir}/${p2.archive.signed.zip} found." if="signed.archive.exist"/>
        <say message="${download.dir}/${p2.archive.signed.zip} not found." unless="signed.archive.exist"/>
        <!-- FAIL THIS PROMOTION if neither the unsigned or signed archive are found                                       -->
        <fail unless="archive.exist"     message="Both the unsigned and signed archive is missing from ${promote.source.dir}! Cannot promote this build."/>
        <property name="temp.rebuild.dir" value="/tmp/EL${run.date}.${run.time}-${version.string}"/>
        <delete dir="${temp.rebuild.dir}" failonerror="false"/>
        <mkdir dir="${temp.rebuild.dir}"/>
    </target>

    <target name="regen-archives" depends="check-to-continue, extract-signed-artifacts, regen-installer-archive, regen-plugin-archive, regen-nosql-archive, gen-build-for-maven"/>
    <target name="check-to-continue" unless="signed.archive.exist">
        <fail message="Signing appears to have failed. Verify existence of signed archive before retrying..."/>
    </target>
    <target name="extract-signed-artifacts">
        <echo message="Extracting signed jars from archive..."/>
        <property name="signed.jar.path" value="${temp.rebuild.dir}/signed"/>
        <unzip dest="${signed.jar.path}" src="${promote.source.dir}/${p2.archive.signed.zip}"/>
    </target>

    <target name="regen-installer-archive">
        <!--     THIS IS NOT DONE. Unless we start signing eclipselink.jar or DBWS Utils again. -->
        <echo message="     THIS IS NOT DONE. Unless we start signing eclipselink.jar or DBWS Utils again."/>
        <echo message="However, we still need a copy of eclipslink.jar for maven. Extracting from original InstallerZip for later copy..."/>
        <!-- unzip original InstallerZip to working dir -->
        <!-- echo message="Creating signed versions of InstallerZip archive..."/ -->
        <unzip dest="${temp.rebuild.dir}/install" src="${promote.source.dir}/${eclipselink.install.prefix}-${version.string}${eclipselink.zip.suffix}">
            <patternset>
                <include name="**/*"/>
            </patternset>
        </unzip>
        <!-- Force overwrite of original content -->
        <!-- copy todir="${temp.rebuild.dir}/install/eclipselink/utils/dbws" file="${signed.jar.path}/${dbws-util.jar}"   failonerror="false"/>
        <copy todir="${temp.rebuild.dir}/install/eclipselink/jlib"       file="${signed.jar.path}/${eclipselink.jar}" failonerror="false"/ -->
        <!-- Rezip EclipseLink Installer Zip -->
        <!-- zip destfile="${temp.rebuild.dir}/${eclipselink.install.prefix}-${version.string}${eclipselink.zip.suffix}" update="true">
            <zipfileset dir="${temp.rebuild.dir}/install" includes="**/*" />
        </zip -->
    </target>

    <target name="regen-plugin-archive">
        <echo message="Creating signed versions of Plugins archive..."/>
        <!-- unzip original PluginInstaller to working dir -->
        <unzip dest="${temp.rebuild.dir}/bundlezip" src="${promote.source.dir}/${eclipselink.plugins.install.prefix}-${version.string}${eclipselink.zip.suffix}">
            <patternset>
                <include name="**/*"/>
            </patternset>
        </unzip>
        <!-- Force overwrite of original content -->
        <copy todir="${temp.rebuild.dir}/bundlezip" failonerror="false">
            <fileset dir="${signed.jar.path}/plugins">
                <include name="*.jar"/>
            </fileset>
        </copy>
        <!-- Rezip EclipseLink Plugins Zip -->
        <zip destfile="${temp.rebuild.dir}/${eclipselink.plugins.install.prefix}-${version.string}${eclipselink.zip.suffix}" update="true">
            <zipfileset dir="${temp.rebuild.dir}/bundlezip" includes="**/*" />
        </zip>
    </target>

    <target name="regen-nosql-archive">
        <echo message="Creating signed versions of NoSQL archive..."/>
        <!-- unzip original PluginInstaller to working dir -->
        <unzip dest="${temp.rebuild.dir}/nosqlzip" src="${promote.source.dir}/${eclipselink.nosql.install.prefix}-${version.string}${eclipselink.zip.suffix}">
            <patternset>
                <include name="**/*"/>
            </patternset>
        </unzip>
        <!-- Force overwrite of original content -->
        <copy todir="${temp.rebuild.dir}/nosqlzip" failonerror="false">
            <fileset dir="${signed.jar.path}/plugins">
                <include name="*nosql*.jar"/>
            </fileset>
        </copy>
        <!-- Rezip EclipseLink Plugins Zip -->
        <zip destfile="${temp.rebuild.dir}/${eclipselink.nosql.install.prefix}-${version.string}${eclipselink.zip.suffix}" update="true">
            <zipfileset dir="${temp.rebuild.dir}/nosqlzip" includes="**/*" />
        </zip>
    </target>

    <target name="gen-build-for-maven">
        <!-- MUST BE DONE AFTER Recreating "signed" version of the archives -->
        <echo message="Prepare for Maven publishing"/>
        <property name="tmp.maven.dir" value="${temp.rebuild.dir}/maven"/>
        <!-- need to setup a dir that contains the correct contents for maven to promote -->
        <mkdir dir="${tmp.maven.dir}"/>
        <!-- get eclipselink source zip -->
        <copy file="${promote.source.dir}/${eclipselink.src.install.prefix}-${version.string}${eclipselink.zip.suffix}" tofile="${tmp.maven.dir}/${eclipselink.src.install.prefix}${eclipselink.zip.suffix}" failonerror="false"/>
        <!-- get eclipselink.jar (from temp InstallerZip location, so will work if signed or unsigned) -->
        <copy todir="${tmp.maven.dir}" file="${temp.rebuild.dir}/install/eclipselink/jlib/${eclipselink.jar}"/>
        <!-- get bundles -->
        <copy todir="${tmp.maven.dir}/${plugins.dir}">
            <fileset dir="${temp.rebuild.dir}/bundlezip">
                <include name="javax*.jar"/>
                <exclude name="javax.wsdl*.jar"/>
            </fileset>
            <fileset dir="${signed.jar.path}/${plugins.dir}">
                <include name="org.eclipse.persistence.*.jar"/>
                <include name="*modelgen*.jar"/>
                <exclude name="*oracleddl*.jar"/>
            </fileset>
            <fileset dir="${temp.rebuild.dir}/bundlezip">
                <include name="eclipselink-jpa-modelgen*.jar"/>
            </fileset>
        </copy>
        <!-- get jakarta.persistence* -->
        <copy todir="${tmp.maven.dir}/${eclipselink.jpa.base}/${plugins.dir}">
            <fileset dir="${temp.rebuild.dir}/bundlezip">
                <include name="jakarta.persistence*2.0*.jar"/>
            </fileset>
        </copy>
        <!-- get commonj.sdo -->
        <copy todir="${tmp.maven.dir}/${eclipselink.sdo.base}/${plugins.dir}">
            <fileset dir="${temp.rebuild.dir}/bundlezip">
                <include name="commonj*.jar"/>
            </fileset>
        </copy>
        <!-- get utils - oracleddl/wsdl -->
        <copy todir="${tmp.maven.dir}/${eclipselink.util.base}/${plugins.dir}">
            <fileset dir="${temp.rebuild.dir}/bundlezip">
                <include name="javax.wsdl*.jar"/>
            </fileset>
            <fileset dir="${signed.jar.path}/${plugins.dir}">
                <include name="org.eclipse.persistence.*oracleddl*.jar"/>
            </fileset>
        </copy>
    </target>

    <target name="publish-milestone" depends="publish-milestone-artifacts, publish-milestone-maven, publish-p2-site"/>
    <target name="publish-milestone-artifacts">
        <!-- Publish from nightly published location to Milestone dir -->
        <mkdir dir="${download.dir}"/>
        <copy todir="${download.dir}" failonerror="false">
            <fileset dir="${temp.rebuild.dir}">
                <!-- Populate new "signed" version of archives (from temp rebuild location) -->
                <include name="${eclipselink.plugins.install.prefix}-${version.string}${eclipselink.zip.suffix}"/>
                <include name="${eclipselink.nosql.install.prefix}-${version.string}${eclipselink.zip.suffix}"/>
                <!-- copy eclipse build file for safekeeping (in case rebuild needed) -->
                <include name="**/eclipselink.build"/>
            </fileset>
            <!-- Populated directly from original (nightly) build area -->
            <fileset dir="${promote.source.dir}">
                <!-- copy signed P2 archive for safekeeping (in case rebuild needed) -->
                <include name="${p2.archive.signed.zip}"/>
                <!-- copy original zip installer, src, and test src archives -->
                <include name="${eclipselink.install.prefix}-${version.string}${eclipselink.zip.suffix}"/>
                <include name="${eclipselink.src.install.prefix}-${version.string}${eclipselink.zip.suffix}"/>
                <include name="${eclipselink.tst.src.prefix}-${version.string}${eclipselink.zip.suffix}"/>
                <include name="${eclipselink.tst.jar.prefix}-${version.string}${eclipselink.zip.suffix}"/>
                <include name="${eclipselink.install.prefix}*${version.qualifier}-shared-lib.zip"/>
                <!-- copy all test results pages -->
                <include name="**/eclipselink-*${version.string}.html"/>
                <include name="**/ResultSummary.dat"/>
                <include name="**/TestConfig.html"/>
            </fileset>
        </copy>
        <!-- Copy for maven to run -->
        <copy todir="${tmp.maven.dir}" file="${basedir}/pom.xml.template"  failonerror="false"/>
        <copy todir="${tmp.maven.dir}" file="${basedir}/uploadToMaven.xml" failonerror="false"/>
        <copy todir="${tmp.maven.dir}" file="${basedir}/uploadToSonatypeOSS.xml" failonerror="false"/>
    </target>

    <target name="publish-milestone-maven" depends="init">
        <ant antfile="uploadToMaven.xml" dir="${tmp.maven.dir}" target="upload-maven-all"/>
    </target>

    <target name="publish-milestone-SonatypeOSS" depends="init">
        <property name="OSS.snapshot.url"   value="https://oss.sonatype.org/content/repositories/snapshots"/>
        <property name="OSS.mc.staging.url" value="https://oss.sonatype.org/service/local/staging/deploy/maven2"/>
        <ant antfile="uploadToMaven.xml" dir="${tmp.maven.dir}" target="upload-maven-all">
            <property name="OSS.repo.dir" value="${OSS.mc.staging.url}"/>
        </ant>
    </target>

</project>
