<?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.5.1-SNAPSHOT</version>
    <relativePath>../ruta-parent/pom.xml</relativePath>
  </parent>
  
  
  <properties>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
  </properties>
  
  <url>${uimaWebsiteUrl}</url>
  <description>The type systems provided by ruta-core.</description>
  <name>Apache UIMA Ruta: ${project.artifactId}</name>
  <dependencies>
    <dependency>
        <groupId>it.unimi.dsi</groupId>
        <artifactId>fastutil</artifactId>
        <version>7.1.0</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>
  <scm>
    <url>http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-typesystem</url>
    <connection>scm:svn:http://svn.apache.org/repos/asf/uima/ruta/trunk/ruta-typesystem</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/uima/ruta/trunk/ruta-typesystem</developerConnection>
  </scm>
  <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>