<?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-core</artifactId>
  <version>2.2.1</version>
  <parent>
    <groupId>org.apache.uima</groupId>
    <artifactId>ruta-parent</artifactId>
    <version>2.2.1</version>
    <relativePath>../ruta-parent/pom.xml</relativePath>
  </parent>
  <properties>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
    <postNoticeText>${uniWueNoticeText}</postNoticeText>
  </properties>
  <url>${uimaWebsiteUrl}</url>
  <description>The core implementation of the UIMA Ruta rule engine.</description>
  <name>Apache UIMA Ruta: ${project.artifactId}</name>
  <dependencies>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-core</artifactId>
      <version>${uimaVersion}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.5</version>
      <scope>test</scope>
    </dependency>
   <dependency>
      <groupId>org.antlr</groupId>
      <artifactId>antlr-runtime</artifactId>
      <version>3.5.2</version>
      <exclusions>
        <exclusion>
          <groupId>org.antlr</groupId> 
          <artifactId>stringtemplate</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.htmlparser</groupId>
      <artifactId>htmlparser</artifactId>
      <version>1.6</version>
    </dependency>
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <version>3.2.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-tools</artifactId>
      <version>${uimaVersion}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-test-util</artifactId>
      <version>${uimaVersion}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimafit-core</artifactId>
      <version>2.1.0</version>
      <!-- Exclude aop stuff, which is not need by uimafit 
      and only introduces a non-asl license -->
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId> 
          <artifactId>spring-aop</artifactId>
        </exclusion>
        <exclusion>
          <groupId>aopalliance</groupId> 
          <artifactId>aopalliance</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- needed for ruta-ep-ide - TODO this should be moved to engine? -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
    <!-- needed for ruta-ep-textruler/ruta-ep-addons - TODO this should be moved to engine? -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-math3</artifactId>
      <version>3.0</version>
    </dependency>

  </dependencies>
  <scm>
    <url>http://svn.apache.org/viewvc/uima/ruta/tags/ruta-2.2.1/ruta-core</url>
    <connection>scm:svn:http://svn.apache.org/repos/asf/uima/ruta/tags/ruta-2.2.1/ruta-core</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/uima/ruta/tags/ruta-2.2.1/ruta-core</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/java/org/apache/uima/ruta/type/*.java</exclude> <!-- jcasgen files -->
                  <exclude>src/main/antlr3/org/apache/uima/ruta/parser/RutaLexer.tokens</exclude> <!-- grammar tokens -->
                  <exclude>src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.tokens</exclude> <!-- grammar tokens -->
                  <exclude>src/test/resources/org/apache/uima/ruta/*.txt</exclude> <!-- test data -->
                  <exclude>src/test/resources/org/apache/uima/ruta/*.ruta</exclude> <!-- test data -->
                  <exclude>src/test/resources/org/apache/uima/ruta/action/*.*</exclude> <!-- test data -->
                  <exclude>src/test/resources/org/apache/uima/ruta/condition/*.txt</exclude> <!-- test data -->
                  <exclude>src/test/resources/org/apache/uima/ruta/condition/*.ruta</exclude> <!-- test data -->
                  <exclude>src/test/resources/org/apache/uima/ruta/seed/*.txt</exclude> <!-- test data -->
                  <exclude>src/test/resources/org/apache/uima/ruta/seed/*.ruta</exclude> <!-- test data -->
                  <exclude>src/test/resources/org/apache/uima/ruta/engine/*.html</exclude> <!-- test data -->
                  <exclude>src/test/resources/org/apache/uima/ruta/engine/*.ruta</exclude> <!-- test data -->
                  <exclude>src/test/resources/org/apache/uima/ruta/engine/*.txt</exclude> <!-- test data -->
                  <exclude>src/main/resources/META-INF/org.apache.uima.fit/*.txt</exclude> <!-- test data -->
                  <exclude>issuesFixed/**</exclude> <!-- generated -->
                </excludes>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
    </resources>
    <plugins>
      <!-- generate java code for antlr grammars -->
      <plugin>
        <groupId>org.antlr</groupId>
        <artifactId>antlr3-maven-plugin</artifactId>
        <version>3.5.2</version>
        <executions>
          <execution>
            <id>run antlr</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>antlr</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>${basedir}/target/generated-sources/antlr3
                </source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <argLine>-Xmx650M</argLine>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>