<?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>
  <artifactId>ruta-typesystem</artifactId>
  <parent>
    <groupId>org.apache.uima</groupId>
    <artifactId>ruta-parent</artifactId>
    <version>2.8.2-SNAPSHOT</version>
    <relativePath>../ruta-parent/pom.xml</relativePath>
  </parent>

  <url>${uimaWebsiteUrl}</url>
  <description>The type systems provided by ruta-core.</description>
  <name>Apache UIMA Ruta: ${project.artifactId}</name>

  <properties>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
  </properties>

  <scm>
    <connection>scm:git:git://github.com/apache/uima-ruta</connection>
    <developerConnection>scm:git:git@github.com:apache/uima-ruta.git</developerConnection>
    <url>https://github.com/apache/uima-ruta</url>
    <tag>HEAD</tag>
  </scm>

  <dependencies>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>ruta-basic-type</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-core</artifactId>
      <version>${uimaVersion}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <executions>
            <execution>
              <id>default-cli</id>
              <configuration>
                <excludes>
                  <exclude>src/main/resources/META-INF/org.apache.uima.fit/*.txt</exclude>
                  <exclude>issuesFixed/**</exclude> <!-- generated -->
                  <exclude>marker-file-identifying-*</exclude>
                </excludes>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.apache.uima</groupId>
        <artifactId>jcasgen-maven-plugin</artifactId>
        <version>${uimaVersion}</version>
        <executions>
          <execution>
            <goals>
              <goal>generate</goal>
            </goals>
            <!-- runs in phase process-resources by default -->
            <configuration>
              <!-- one or more ant-like file patterns identifying top level descriptors -->
              <typeSystemIncludes>
                <typeSystemInclude>src/main/resources/org/apache/uima/ruta/engine/RutaInternalTypeSystem.xml</typeSystemInclude>
                <typeSystemInclude>src/main/resources/org/apache/uima/ruta/engine/DefaultSeederTypeSystem.xml</typeSystemInclude>
                <typeSystemInclude>src/main/resources/org/apache/uima/ruta/engine/HtmlTypeSystem.xml</typeSystemInclude>
                <typeSystemInclude>src/main/resources/org/apache/uima/ruta/engine/PlainTextTypeSystem.xml</typeSystemInclude>
              </typeSystemIncludes>
              <limitToProject>true</limitToProject>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <argLine>-Xmx650M</argLine>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <!-- Exclude generated jcas classes -->
          <sourceFileExcludes>
            <sourceFileExclude>**/org/apache/uima/ruta/type/*.java</sourceFileExclude>
          </sourceFileExcludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>