<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.uima</groupId>
    <artifactId>textmarker-parent</artifactId>
    <version>2.0.0</version>
    <relativePath>textmarker-parent/pom.xml</relativePath>
  </parent>

  <groupId>org.apache.uima</groupId>
  <artifactId>textmarker</artifactId>
  <packaging>pom</packaging>
  <version>2.0.0</version>
  <name>Apache UIMA TextMarker: ${project.artifactId}</name>
  <description>The top project for Apache UIMA TextMarker</description>
  <url>${uimaWebsiteUrl}</url>
  <properties>
    <jiraVersion>12323872</jiraVersion>
    <assembly.attach>false</assembly.attach>
  </properties>

  <!-- override pom setting in the build project. JIRA 5.1 needs different URL -->
  <issueManagement>
    <system>Jira</system>
    <url>https://issues.apache.org/jira/browse/UIMA</url>
  </issueManagement>

  <!-- 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>
    <url>http://svn.apache.org/viewvc/uima/sandbox/textmarker/tags/textmarker-2.0.0-rc6</url>
    <connection>scm:svn:http://svn.apache.org/repos/asf/uima/sandbox/textmarker/tags/textmarker-2.0.0-rc6</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/uima/sandbox/textmarker/tags/textmarker-2.0.0-rc6</developerConnection>
  </scm>

  <!-- dependencies used during assembly -->
  <dependencies>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>textmarker-core</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>textmarker-ep-addons</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>textmarker-ep-caseditor</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>textmarker-ep-engine</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>textmarker-ep-ide</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>textmarker-ep-textruler</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>
  
  <modules>
    <module>textmarker-parent</module>
    <module>textmarker-core</module>

    <module>textmarker-ep-engine</module>
    <module>textmarker-ep-ide</module>
    <module>textmarker-ep-caseditor</module>
    <module>textmarker-ep-addons</module>
    <module>textmarker-ep-textruler</module>

    <module>textmarker-docbook</module>
    <module>textmarker-eclipse-feature</module>
  </modules>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <!-- run Release Audit Tool (RAT) -->
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <executions>
            <execution>
              <id>default-cli</id>
              <configuration>
                <excludes>
                  <exclude>target/**</exclude>
                  <exclude>example-projects/**</exclude>
                  <exclude>README*</exclude>
                  <exclude>RELEASE_NOTES*</exclude>
                  <exclude>issuesFixed/**</exclude>
                  <exclude>src/main/resources/docbook-shared/titlepage/*.xsl</exclude>
                  <exclude>marker-file-identifying-*</exclude>
                  <exclude>DEPENDENCIES</exclude>
                </excludes>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-changes-plugin</artifactId>
          <version>2.8</version>
          <executions>
            <execution>
              <id>default-cli</id>
              <goals>
                <goal>jira-report</goal>
              </goals>

              <phase>generate-resources</phase>
              <configuration>
                <useJql>true</useJql>
                <fixVersionIds>${jiraVersion}</fixVersionIds>
                <component>TextMarker</component>
                <columnNames>Type,Key,Status,Summary</columnNames>
                <resolution>Fixed</resolution>
                <status>Closed,Resolved</status>
                <sortColumnNames>Type, Status, Key</sortColumnNames>
                <outputDirectory>${basedir}/issuesFixed/</outputDirectory>
                <maxEntries>1000</maxEntries>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <profiles>
    <profile>
      <id>build distribution</id>
      <build>
        <plugins>
          <plugin>
            <!-- do not skip maven deployment of this project's artifacts -->
            <artifactId>maven-deploy-plugin</artifactId>      
            <configuration>
              <skip>false</skip>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
      
    <profile>
      <id>apache-release</id>
      <build>
        <plugins>
          <!-- Run jira report -->
          <!-- depends on having -DjiraVersion set -->
          <plugin>
            <artifactId>maven-changes-plugin</artifactId>
            <version>2.8</version>
            <executions>
              <execution>
                <id>default-cli</id>
                <configuration>
                  <fixVersionIds>${jiraVersion}</fixVersionIds>
                  <sortColumnNames>Type, Status, Key</sortColumnNames>
                </configuration>
              </execution>
            </executions>
          </plugin>
           <plugin>
		        <artifactId>maven-antrun-plugin</artifactId>
		        <inherited>false</inherited>
		        <executions>
		          <execution>
		            <id>ExtendSourceRelease</id>
		            <phase>package</phase>
		            <configuration>
		              <target>
		                <zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
									    <zipfileset dir="${basedir}/example-projects/ExampleProject/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/ExampleProject/" />
									  </zip>
		              </target>
		            </configuration>
		            <goals>
		              <goal>run</goal>
		            </goals>
		          </execution>
		        </executions>
		      </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>