<?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.6.1-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>
		<url>http://svn.apache.org/viewvc/uima/ruta/trunk/example-projects/ruta-maven-example</url>
		<connection>scm:svn:http://svn.apache.org/repos/asf/uima/ruta/trunk/example-projects/ruta-maven-example</connection>
		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/uima/ruta/trunk/example-projects/ruta-maven-example</developerConnection>
	</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>