<?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.3.0</version>
		<relativePath>../../ruta-parent/pom.xml</relativePath>
	</parent>
	<url>${uimaWebsiteUrl}</url>
	<scm>
		<url>http://svn.apache.org/viewvc/uima/ruta/tags/ruta-2.3.0/example-projects/ruta-maven-example</url>
		<connection>scm:svn:http://svn.apache.org/repos/asf/uima/ruta/tags/ruta-2.3.0/example-projects/ruta-maven-example</connection>
		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/uima/ruta/tags/ruta-2.3.0/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>
			<version>4.5</version>
			<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>
				<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>
				<executions>
					<execution>
						<id>default</id>
						<phase>process-classes</phase>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.uima</groupId>
				<artifactId>ruta-maven-plugin</artifactId>
				<version>2.3.0</version>
				<configuration />
				<executions>
					<execution>
						<id>default</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>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.uima</groupId>
				<artifactId>ruta-maven-plugin</artifactId>
				<version>2.3.0</version>
				<configuration />
				<executions>
					<execution>
						<id>default</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>