<?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>
	<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.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>