<?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>2</version>
  </parent>
  <groupId>org.apache.uima</groupId>
  <artifactId>uima-addons</artifactId>
  <packaging>pom</packaging>
  <version>2.3.2-SNAPSHOT</version>
  <name>Apache UIMA Aggregate: ${project.artifactId}</name>
  <description>A convenience aggregate for the UIMA addons</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/addons/trunk/
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/uima/addons/trunk/
    </developerConnection>
    <url>
      http://svn.apache.org/viewvc/uima/addons/trunk/
    </url>
  </scm>
  <properties>
    <uimaScmRoot>addons</uimaScmRoot>
    <!-- use the standard source-release because this project has hierarchical nesting of subprojects -->
    <sourceReleaseAssemblyDescriptor>source-release</sourceReleaseAssemblyDescriptor>     
  </properties>

  <modules>
    <module>uima-addons-parent</module>
    <module>AlchemyAPIAnnotator</module>
    <module>BSFAnnotator</module>
    <module>ConceptMapper</module>
    <module>ConfigurableFeatureExtractor</module>
    <module>DictionaryAnnotator</module>
    <module>FsVariables</module>
    <module>Lucas</module>
    <module>OpenCalaisAnnotator</module>
    <module>PearPackagingAntTask</module>
    <module>RegularExpressionAnnotator</module>
    <module>SimpleServer</module>
    <module>SnowballAnnotator</module>
    <module>Solrcas</module>
    <module>Tagger</module>
    <module>TikaAnnotator</module>
    <module>WhitespaceTokenizer</module>
  </modules>

  <profiles>
    <profile>
      <id>apache-release</id>
      <properties>
        <jiraVersion>12316093</jiraVersion>
        <!-- for 2.3.1 Addons -->
        <assemblyFinalName>uima-addons-${project.version}</assemblyFinalName>
      </properties>

      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-release-plugin</artifactId>
              <version>2.1</version>
              <configuration>
                <mavenExecutorId>forked-path</mavenExecutorId>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>        
        
        <plugins>
          
          <!-- https://issues.apache.org/jira/browse/UIMA-2008 -->
          <!-- no maven deployment of this project's artifacts -->
          <!-- binary build artifact deployed from apache mirror system after 
            release -->
          <plugin>
            <artifactId>maven-deploy-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>generate checksums for binary artifacts</id>
                <goals>
                  <goal>run</goal>
                </goals>
                <phase>verify</phase>
                <configuration>
                  <target>
                    <checksum algorithm="sha1" format="MD5SUM">
                      <fileset dir="${project.build.directory}">
                        <include name="*.zip" />
                        <include name="*.gz" />
                      </fileset>
                    </checksum>
                    <checksum algorithm="md5" format="MD5SUM">
                      <fileset dir="${project.build.directory}">
                        <include name="*.zip" />
                        <include name="*.gz" />
                      </fileset>
                    </checksum>
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-changes-plugin</artifactId>
            <executions>
              <execution>
                <id>default-cli</id>
                <configuration>
                  <fixVersionIds>${jiraVersion}</fixVersionIds>
                  <sortColumnNames>Status, Key, Type</sortColumnNames>
                </configuration>
              </execution>
            </executions>
          </plugin>
                    
        </plugins>
      </build>
    </profile>
  </profiles>
  
</project>