<?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-maven-example</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>
  <name>Apache UIMA Ruta: ${project.artifactId}</name>
  <properties>
    <postNoticeText />
    <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-core</artifactId>
      <version>${project.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>ruta-core-ext</artifactId>
      <version>${project.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-jdk14</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>


  <build>
    <resources>
      <resource>
        <directory>src/main/ruta</directory>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <directory>${project.build.directory}/generated-sources/ruta/descriptor</directory>
      </resource>
      <resource>
        <directory>${project.build.directory}/generated-sources/ruta/resources</directory>
      </resource>
    </resources>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <executions>
            <execution>
              <id>default-cli</id>
              <configuration>
                <excludes>
                  <exclude>.buildpath</exclude> <!-- generate IDE file -->
                  <exclude>src/main/resources/FirstNames.txt</exclude> <!-- dictionary -->
                  <exclude>issuesFixed/**</exclude> <!-- generated -->
                </excludes>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>org.apache.uima</groupId>
        <artifactId>ruta-maven-plugin</artifactId>
        <version>${project.version}</version>

        <executions>
          <execution>
            <id>descriptors</id>
            <!-- use this phase so that the ruta script files are already copied to target/classes -->
            <!-- no need to specify the included script directories with <scriptFiles> -->
            <phase>process-classes</phase>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>

              <!-- This is a exemplary configuration, which explicitly specifies the default configuration
                values if not mentioned otherwise. -->

              <!-- The directory where the generated type system descriptors will be written stored. -->
              <!-- default value: ${project.build.directory}/generated-sources/ruta/descriptor -->
              <typeSystemOutputDirectory>${project.build.directory}/generated-sources/ruta/descriptor</typeSystemOutputDirectory>

              <!-- The directory where the generated analysis engine descriptors will be stored. -->
              <!-- default value: ${project.build.directory}/generated-sources/ruta/descriptor -->
              <analysisEngineOutputDirectory>${project.build.directory}/generated-sources/ruta/descriptor</analysisEngineOutputDirectory>

              <!-- The template descriptor for the generated type system. By default the descriptor of
                the maven dependency is loaded. -->
              <!-- default value: none -->
              <!-- not used in this example <typeSystemTemplate>...</typeSystemTemplate> -->

              <!-- The template descriptor for the generated analysis engine. By default the descriptor
                of the maven dependency is loaded. -->
              <!-- default value: none -->
              <!-- not used in this example <analysisEngineTemplate>...</analysisEngineTemplate> -->

              <!-- Script paths of the generated analysis engine descriptor. -->
              <!-- default value: none -->
              <scriptPaths>
                <scriptPath>${basedir}/src/main/ruta/</scriptPath>
              </scriptPaths>

              <!-- Descriptor paths of the generated analysis engine descriptor. -->
              <!-- default value: none -->
              <descriptorPaths>
                <descriptorPath>${project.build.directory}/generated-sources/ruta/descriptor</descriptorPath>
              </descriptorPaths>

              <!-- Resource paths of the generated analysis engine descriptor. -->
              <!-- default value: none -->
              <resourcePaths>
                <resourcePath>${basedir}/src/main/resources/</resourcePath>
                <resourcePath>${project.build.directory}/generated-sources/ruta/resources/</resourcePath>
              </resourcePaths>

              <!-- Suffix used for the generated type system descriptors. -->
              <!-- default value: Engine -->
              <analysisEngineSuffix>Engine</analysisEngineSuffix>

              <!-- Suffix used for the generated analysis engine descriptors. -->
              <!-- default value: TypeSystem -->
              <typeSystemSuffix>TypeSystem</typeSystemSuffix>

              <!-- Source file encoding. -->
              <!-- default value: ${project.build.sourceEncoding} -->
              <encoding>UTF-8</encoding>

              <!-- Type of type system imports. false = import by location. -->
              <!-- default value: false -->
              <importByName>false</importByName>

              <!-- Option to resolve imports while building. -->
              <!-- default value: false -->
              <resolveImports>false</resolveImports>

              <!-- Amount of retries for building dependent descriptors. Default value -1 leads to three
                retires for each script. -->
              <!-- default value: -1 -->
              <maxBuildRetries>-1</maxBuildRetries>

              <!-- List of packages with language extensions -->
              <!-- default value: none -->
              <extensionPackages>
                <extensionPackage>org.apache.uima.ruta</extensionPackage>
              </extensionPackages>

              <!-- Add UIMA Ruta nature to .project -->
              <!-- default value: false -->
              <addRutaNature>true</addRutaNature>


              <!-- Buildpath of the UIMA Ruta Workbench (IDE) for this project -->
              <!-- default value: none -->
              <buildPaths>
                <buildPath>script:src/main/ruta/</buildPath>
                <buildPath>descriptor:target/generated-sources/ruta/descriptor/</buildPath>
                <buildPath>resources:src/main/resources/</buildPath>
              </buildPaths>

            </configuration>
          </execution>
          <execution>
            <id>twl</id>
            <phase>process-classes</phase>
            <goals>
              <goal>twl</goal>
            </goals>
            <configuration>
              <!-- This is a exemplary configuration, which explicitly specifies the default configuration
                values if not mentioned otherwise. -->

              <!-- Compress resulting tree word list. -->
              <!-- default value: true -->
              <compress>true</compress>

              <!-- The source files for the tree word list. -->
              <!-- default value: none -->
              <inputFiles>
                <directory>${basedir}/src/main/resources</directory>
                <includes>
                  <include>*.txt</include>
                </includes>
              </inputFiles>

              <!-- The directory where the generated tree word lists will be written to. -->
              <!-- default value: ${project.build.directory}/generated-sources/ruta/resources/ -->
              <outputDirectory>${project.build.directory}/generated-sources/ruta/resources/</outputDirectory>

              <!-- Source file encoding. -->
              <!-- default value: ${project.build.sourceEncoding} -->
              <encoding>UTF-8</encoding>

            </configuration>
          </execution>
          <execution>
            <id>mtwl</id>
            <phase>process-classes</phase>
            <goals>
              <goal>mtwl</goal>
            </goals>
            <configuration>
              <!-- This is a exemplary configuration, which explicitly specifies the default configuration
                values if not mentioned otherwise. -->

              <!-- Compress resulting tree word list. -->
              <!-- default value: true -->
              <compress>true</compress>

              <!-- The source files for the multi tree word list. -->
              <!-- default value: none -->
              <inputFiles>
                <directory>${basedir}/src/main/resources</directory>
                <includes>
                  <include>*.txt</include>
                </includes>
              </inputFiles>

              <!-- The directory where the generated tree word list will be written to. -->
              <!-- default value: ${project.build.directory}/generated-sources/ruta/resources/generated.mtwl -->
              <outputFile>${project.build.directory}/generated-sources/ruta/resources/generated.mtwl</outputFile>

              <!-- Source file encoding. -->
              <!-- default value: ${project.build.sourceEncoding} -->
              <encoding>UTF-8</encoding>

            </configuration>
          </execution>
        </executions>
      </plugin>

      <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/types/BibtexTypeSystem.xml</typeSystemInclude>
              </typeSystemIncludes>

              <limitToProject>true</limitToProject>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>