<?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 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
  
  <parent>
    <groupId>org.apache.uima</groupId>
    <artifactId>parent-pom</artifactId>
    <version>6</version>
    <relativePath />
  </parent>
  
	<artifactId>ruta-eclipse-update-site</artifactId>
	<packaging>pom</packaging>
	<version>2.2.1</version>
  
	<name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
  <description>The UIMA Ruta Eclipse update site</description>
  <url>${uimaWebsiteUrl}</url>

  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/uima/ruta/trunk/ruta-eclipse-update-site
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/uima/ruta/trunk/ruta-eclipse-update-site
    </developerConnection>
    <url>
      http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-eclipse-update-site
    </url>
  </scm>
  
  <properties>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
    <eclipseUpdateSiteComponent>ruta</eclipseUpdateSiteComponent>
    <eclipseUpdateSubSite>${project.build.directory}/eclipse-update-site/${eclipseUpdateSiteComponent}</eclipseUpdateSubSite>
    <item-maven-release-version>2.2.1</item-maven-release-version>
    <item-eclipse-release-version>2.2.1</item-eclipse-release-version>
  </properties>
	<build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <executions>
            <execution>
              <id>default-cli</id>
              <configuration>
                <excludes>
                  <exclude>marker-file-identifying-eclipse-update-site</exclude> <!-- marker file -->
                </excludes>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
		<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 
                ======================================================================= -->
              <artifactItems>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>ruta-ep-addons</artifactId>         <version>${item-maven-release-version}</version><destFileName>org.apache.uima.ruta.addons_${item-eclipse-release-version}.jar   </destFileName></artifactItem>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>ruta-ep-caseditor</artifactId>      <version>${item-maven-release-version}</version><destFileName>org.apache.uima.ruta.caseditor_${item-eclipse-release-version}.jar</destFileName></artifactItem>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>ruta-ep-engine</artifactId>         <version>${item-maven-release-version}</version><destFileName>org.apache.uima.ruta.engine_${item-eclipse-release-version}.jar   </destFileName></artifactItem>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>ruta-ep-ide</artifactId>            <version>${item-maven-release-version}</version><destFileName>org.apache.uima.ruta.ide_${item-eclipse-release-version}.jar      </destFileName></artifactItem>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>ruta-ep-ide-ui</artifactId>         <version>${item-maven-release-version}</version><destFileName>org.apache.uima.ruta.ide.ui_${item-eclipse-release-version}.jar   </destFileName></artifactItem>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>ruta-ep-textruler</artifactId>      <version>${item-maven-release-version}</version><destFileName>org.apache.uima.ruta.textruler_${item-eclipse-release-version}.jar</destFileName></artifactItem>
              </artifactItems>            
              <outputDirectory>${toBePacked}</outputDirectory>              
            </configuration>
          </execution>
          <execution>
            <id>copy-features</id>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <!-- ===================================================================
                                         the FEATURES
                ======================================================================= -->
              <artifactItems>
                <artifactItem><groupId>org.apache.uima</groupId><artifactId>ruta-eclipse-feature</artifactId><version>${item-maven-release-version}</version><destFileName>org.apache.uima.ruta.feature_${item-eclipse-release-version}.jar</destFileName></artifactItem>
              </artifactItems>
              <outputDirectory>${project.build.directory}/eus-work/features</outputDirectory>   
            </configuration>
          </execution>
        </executions>
			</plugin>
      <plugin>
        <!-- Override v 6 parent pom incorrect use of apacheRelease ant property
             See https://issues.apache.org/jira/browse/UIMA-3080 -->
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>       
          <execution>
            <id>BuildUpdateSite-pack-svnget-buildMetadata-commit-to-dev</id>
            <configuration>
              <target>
                <condition />  <!-- don't add anything to the 1st condition element -->
                <condition />  <!-- don't add anything to the 2nd condition element -->
                              <!-- insert this as the 3rd condition element -->
                <condition property="apacheRelease">
                  <equals arg1="${isApacheRelease}" arg2="true" />
                </condition>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>
		</plugins>
	</build>
</project>