<?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>ruta-parent</artifactId>
    <version>2.8.1</version>
    <relativePath>../ruta-parent/pom.xml</relativePath>
  </parent>
    
  <artifactId>ruta-eclipse-feature</artifactId>
  
  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
  <description>UIMA Eclipse Plugin Feature that
    contains the UIMA Ruta engine and IDE</description>
  <url>${uimaWebsiteUrl}</url>

  <!-- Special inheritance note
       even though the <scm> element that follows is exactly the 
       same as those in super poms, it cannot be inherited because 
       there is some special code that computes the connection elements
       from the chain of parent poms, if this is omitted. 
       
       Keeping this a bit factored allows cutting/pasting the <scm>
       element, and just changing the following two properties -->  
  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/uima/ruta/tags/ruta-2.8.1/ruta-eclipse-feature
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/uima/ruta/tags/ruta-2.8.1/ruta-eclipse-feature
    </developerConnection>
    <url>
      http://svn.apache.org/viewvc/uima/ruta/tags/ruta-2.8.1/ruta-eclipse-feature
    </url>
  </scm>
  
  <properties>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
    <postNoticeText>${uniWueNoticeText}</postNoticeText>
  </properties>

  <build>
    <!-- parsedVersion set in parent-pom by builder-helper -->
    <finalName>${project.artifactId}_${parsedVersion.osgiVersion}</finalName>
    <!-- turn on filtering for these resources -->         
    <resources>
      <resource>
        <directory>${basedir}</directory>
        <includes>
          <include>feature.properties</include>
          <include>feature.xml</include>
          <include>uima-eclipse-user-agreement.html</include>
        </includes>
        <filtering>true</filtering>
      </resource>
    </resources>
    
    <plugins>
      <!-- filter the feature.xml to have the right version info 
           for Eclipse at the top level-->
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>filter feature.xml</id>
            <!-- run before process-resources, which uses this result -->
            <phase>generate-resources</phase>
            <goals><goal>copy-resources</goal></goals>
            <configuration>
              <outputDirectory>${basedir}</outputDirectory>
              <resources>
                <resource>
                  <directory>src/main/resources</directory>
                  <includes><include>feature.xml</include></includes>
                  <filtering>true</filtering>
                </resource>
              </resources> 
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>