<?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>3.2.0</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:https://github.com/apache/uima-ruta/</connection>
    <developerConnection>scm:git:https://github.com/apache/uima-ruta/</developerConnection>
    <url>https://github.com/apache/uima-ruta/</url>
    <tag>ruta-3.2.0</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 combine.children="append">
                  <exclude>.buildpath</exclude> <!-- generate IDE file -->
                  <exclude>src/main/resources/FirstNames.txt</exclude> <!-- dictionary -->
                </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>