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