<?xml version="1.0" encoding="UTF-8"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.uima</groupId>
    <artifactId>uimaj-parent</artifactId>
    <version>3.0.0</version>
    <relativePath />
  </parent>

  <artifactId>uimaj-eclipse-update-site</artifactId>
  <version>3.0.0</version>
  <packaging>pom</packaging>

  <name>Apache UIMA Eclipse: ${project.artifactId}</name>
  <description>The UIMA Java SDK Eclipse update site</description>
  <url>${uimaWebsiteUrl}</url>

  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/uima/uv3/uimaj-v3/tags/uimaj-eclipse-update-site-3.0.0
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/uima/uv3/uimaj-v3/tags/uimaj-eclipse-update-site-3.0.0
    </developerConnection>
    <url>
      http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/tags/uimaj-eclipse-update-site-3.0.0
    </url>
  </scm>

  <properties>
    <uimaScmRoot>uimaj</uimaScmRoot>
    <uimaScmProject>${project.artifactId}</uimaScmProject>

    <eclipseUpdateSiteComponent>uimaj-uv3</eclipseUpdateSiteComponent>

    <eclipseUpdateSubSite>${project.build.directory}/eclipse-update-site/${eclipseUpdateSiteComponent}</eclipseUpdateSubSite>

  </properties>

  <build>
    
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-new-plugins</id>
            <goals><goal>copy</goal></goals>
            <configuration>
              <!-- ===================================================================
                                       the PLUGINS
                      note: rename to add org.apache.uima. and
                                   hyphen change to underscore in destination to follow
                                   Eclipse conventions
                            Name must be the same as the ID for the plugin or feature
                ======================================================================= -->
              <artifactItems>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>uimaj-ep-cas-editor</artifactId>    <version>${project.version}</version><destFileName>org.apache.uima.caseditor_${parsedVersion.osgiVersion}.jar    </destFileName></artifactItem>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>uimaj-ep-cas-editor-ide</artifactId><version>${project.version}</version><destFileName>org.apache.uima.caseditor.ide_${parsedVersion.osgiVersion}.jar</destFileName></artifactItem>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>uimaj-ep-configurator</artifactId>  <version>${project.version}</version><destFileName>org.apache.uima.desceditor_${parsedVersion.osgiVersion}.jar   </destFileName></artifactItem>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>uimaj-ep-debug</artifactId>         <version>${project.version}</version><destFileName>org.apache.uima.debug_${parsedVersion.osgiVersion}.jar        </destFileName></artifactItem>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>uimaj-ep-jcasgen</artifactId>       <version>${project.version}</version><destFileName>org.apache.uima.jcas.jcasgenp_${parsedVersion.osgiVersion}.jar</destFileName></artifactItem>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>uimaj-ep-pear-packager</artifactId> <version>${project.version}</version><destFileName>org.apache.uima.pear_${parsedVersion.osgiVersion}.jar         </destFileName></artifactItem>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>uimaj-ep-runtime</artifactId>       <version>${project.version}</version><destFileName>org.apache.uima.runtime_${parsedVersion.osgiVersion}.jar      </destFileName></artifactItem>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>uimaj-ep-launcher</artifactId>      <version>${project.version}</version><destFileName>org.apache.uima.launcher_${parsedVersion.osgiVersion}.jar     </destFileName></artifactItem>
              </artifactItems>
              <outputDirectory>${toBePacked}</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>copy-features</id>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <!-- ===================================================================
                                         the FEATURES
                      note: rename to add org.apache.uima. and
                                   hyphen change to underscore in destination to follow
                                   Eclipse conventions
                            Name must be the same as the ID for the plugin or feature
                ======================================================================= -->
              <artifactItems>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>uimaj-eclipse-feature-runtime</artifactId><version>${project.version}</version><destFileName>org.apache.uima.runtime_${parsedVersion.osgiVersion}.jar</destFileName></artifactItem>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>uimaj-eclipse-feature-tools</artifactId>  <version>${project.version}</version><destFileName>org.apache.uima.tools_${parsedVersion.osgiVersion}.jar  </destFileName></artifactItem>
              </artifactItems>
              <outputDirectory>${eusWork}/features</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
           <execution>
            <id>BuildUpdateSite-pack-svnget-buildMetadata-commit-to-dev</id>
            <phase>package</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration combine.self="override">
              <target>
                <taskdef classname="net.sf.antcontrib.logic.IfTask" name="if" />
                
                <condition property="eclipse.home" value="${uima-maven-build-eclipse-home}">
                  <not>
                    <equals arg1="${uima-maven-build-eclipse-home}" arg2="$${uima-maven-build-eclipse-home}" />
                  </not>
                </condition>

                <property environment="envVar" />
                <condition property="eclipse.home" value="${envVar.ECLIPSE_HOME}">
                  <isset property="envVar.ECLIPSE_HOME" />
                </condition>
                
                <fail unless="eclipse.home" message="********** Please set up and use an ant property eclipse.home set to an Eclipse installation at level 3.3 or later, e.g. c:/eclipses/3.3/eclipse" />
                <fail unless="uima-eclipse-jar-processor" message="********** Please add to your settings.xml file the property uima-eclipse-jar-processor, point to this within an Eclipse installation at level 4.2 or later, e.g. \$\{uima-maven-build-eclipse-home\}/plugins/org.eclipse.equinox.p2.jarprocessor_1.0.200.v20110808-1657.jar" />
                <!--  skip this for first release, only want latest there
                <if>
                  <equals arg2="true" arg1="${isApacheRelease}" />
                  <then>
                    
                    <echo>checking out eclipse update subsite uimaj-v3-pre-production from dist ...release...</echo>
                    <delete quiet="true" dir="${eclipseUpdateSubSite}" />
                    <exec failonerror="true" executable="svn">
                      <arg value="checkout" />
                      <arg value="https://dist.apache.org/repos/dist/release/uima/eclipse-update-site/uimaj-v3-pre-production" />
                      <arg value="${eclipseUpdateSubSite}" />
                    </exec>
                    
                    <echo>Saving original content and artifacts for the site</echo>
                    <copy todir="${project.build.directory}/saved" failonerror="true"> 
                      <fileset dir="${eclipseUpdateSubSite}" includes="content.jar,artifacts.jar" />
                    </copy>
                    
                  </then>
                  <else>
                    <echo>skipping checkout of current svn dist release (because not apache-release)</echo>
                    <delete quiet="true" dir="${eclipseUpdateSubSite}" />
                  </else>
                </if>
                   -->
                    
                <echo>Compress plugin Jars using pack200 - this may take a minute or 2</echo>
                <java fork="true" maxmemory="256m" jar="${uima-eclipse-jar-processor}" failonerror="true">
                  <arg line="-processAll" />
                  <arg line="-repack" />
                  <arg line="-pack" />
                  <arg line="-verbose" />
                  <arg line="-outputDir ${eusWork}/plugins" />
                  <arg line="${toBePacked}" />
                </java>
                
                <echo>Save conditioned Jars prior to signing, in case of redo</echo>
                <echo>-------------------------------------------------------</echo> 
                <copy todir="${project.build.directory}/saved/features" failonerror="true">
                  <fileset dir="${eusWork}/features" includes="*.jar" />                 
                </copy>
                <copy todir="${project.build.directory}/saved/plugins" failonerror="true">
                   <fileset dir="${eusWork}/plugins" includes="*.jar" />                 
                </copy>
                
                <echo>Generate the p2 metadata and publish new artifacts</echo>
                <java fork="true" maxmemory="256m" jar="${eclipse-equinox-launcher}" failonerror="true">
                  <arg line="-application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher" />
                  <arg line="-metadataRepository file:///${eclipseUpdateSubSite}" />
                  <arg line="-artifactRepository file:///${eclipseUpdateSubSite}" />
                  <arg line="-source ${eusWork}" />
                  <arg line="-configs ANY.ANY.ANY" />
                  <arg line="-publishArtifacts" />
                  <arg line="-reusePack200Files" />
                  <arg line="-compress" />
                  <arg line="-append" />
                </java>
                <echo>Augment p2 metadata with category information</echo>
                <java fork="true" maxmemory="256m" jar="${eclipse-equinox-launcher}" failonerror="true">
                  <arg line="-application org.eclipse.equinox.p2.publisher.CategoryPublisher" />
                  <arg line="-metadataRepository file:///${eclipseUpdateSubSite}" />
                  <arg line="-categoryDefinition file:///${basedir}/category.xml" />
                  <arg line="-categoryQualifier apache-uima" />
                  <arg line="-compress" />
                </java>
                <if>
                  <equals arg2="true" arg1="${isApacheRelease}" />
                  <then>
                    <echo message="Generating checksums for new features and plugins" />
                    <checksum format="MD5SUM" algorithm="sha1">
                      <fileset dir="${eusWork}">
                        <include name="**/*.gz" />
                        <include name="**/*.jar" />
                      </fileset>
                    </checksum>
                    <checksum format="MD5SUM" algorithm="md5">
                      <fileset dir="${eusWork}">
                        <include name="**/*.gz" />
                        <include name="**/*.jar" />
                      </fileset>
                    </checksum>
                    <echo message="Generating gpg signatures for new features and plugins" />
                    <apply failonerror="true" dir="${eusWork}" executable="gpg">
                      <arg value="--detach-sign" />
                      <arg value="--armor" />
                      <arg value="--batch" />
                      <fileset dir="${eusWork}">
                        <include name="**/*.jar" />
                        <include name="**/*.jar.pack.gz" />
                      </fileset>
                    </apply>
                    <echo message="Copying the checksums and signatures to the update subsite" />
                    <copy todir="${eclipseUpdateSubSite}" failonerror="true">
                      <fileset dir="${eusWork}">
                        <include name="**/*.asc" />
                        <include name="**/*.md5" />
                        <include name="**/*.sha1" />
                      </fileset>
                    </copy>
                    <echo message="Clearing previous checksums and signatures for update artifacts.jar and content.jar" />
                    <delete dir="${eclipseUpdateSubSite}">
                      <include name="*.sha1" />
                      <include name="*.md5" />
                      <include name="*.asc" />
                    </delete>
                    <echo message="Generating checksums for updated artifacts.jar and content.jar" />
                    <checksum format="MD5SUM" algorithm="sha1">
                      <fileset dir="${eclipseUpdateSubSite}">
                        <include name="*.jar" />
                      </fileset>
                    </checksum>
                    <checksum format="MD5SUM" algorithm="md5">
                      <fileset dir="${eclipseUpdateSubSite}">
                        <include name="*.jar" />
                      </fileset>
                    </checksum>
                    <echo message="Generating gpg signatures for artifacts.jar and content.jar" />
                    <apply failonerror="true" dir="${eclipseUpdateSubSite}" executable="gpg">
                      <arg value="--detach-sign" />
                      <arg value="--armor" />
                      <arg value="--batch" />
                      <fileset dir="${eclipseUpdateSubSite}">
                        <include name="*.jar" />
                      </fileset>
                    </apply>
                  </then>
                </if>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>

   </plugins>
  </build>

</project>
