<?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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.apache</groupId>
		<artifactId>apache</artifactId>
		<version>18</version>
		<relativePath />
	</parent>

	<groupId>org.apache.opennlp</groupId>
	<artifactId>opennlp</artifactId>
	<version>2.0.0</version>
	<packaging>pom</packaging>

	<name>Apache OpenNLP Reactor</name>

	<scm>
		<connection>scm:git:https://github.com/apache/opennlp.git</connection>
		<developerConnection>scm:git:git@github.com:apache/opennlp.git</developerConnection>
		<url>https://github.com/apache/opennlp.git</url>
		<tag>2.0.0</tag>
	</scm>

	<repositories>
		<repository>
			<id>apache.snapshots</id>
			<name>Apache Snapshot Repository</name>
			<url>https://repository.apache.org/snapshots</url>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
	</repositories>

	<mailingLists>
		<mailingList>
			<name>Apache OpenNLP Users</name>
			<subscribe>users-subscribe@opennlp.apache.org</subscribe>
			<unsubscribe>users-unsubscribe@opennlp.apache.org</unsubscribe>
			<post>users@opennlp.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/opennlp-users/</archive>
		</mailingList>

		<mailingList>
			<name>Apache OpenNLP Developers</name>
			<subscribe>dev-subscribe@opennlp.apache.org</subscribe>
			<unsubscribe>dev-unsubscribe@opennlp.apache.org</unsubscribe>
			<post>dev@opennlp.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/opennlp-dev/</archive>
		</mailingList>

		<mailingList>
			<name>Apache OpenNLP Commits</name>
			<subscribe>commits-subscribe@opennlp.apache.org</subscribe>
			<unsubscribe>commits-unsubscribe@opennlp.apache.org</unsubscribe>
			<archive>http://mail-archives.apache.org/mod_mbox/opennlp-commits/</archive>
		</mailingList>

		<mailingList>
			<name>Apache OpenNLP Issues</name>
			<subscribe>issues-subscribe@opennlp.apache.org</subscribe>
			<unsubscribe>issues-unsubscribe@opennlp.apache.org</unsubscribe>
			<archive>http://mail-archives.apache.org/mod_mbox/opennlp-issues/</archive>
		</mailingList>
	</mailingLists>

	<issueManagement>
		<system>jira</system>
		<url>https://issues.apache.org/jira/browse/OPENNLP</url>
	</issueManagement>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>${junit.version}</version>
				<scope>test</scope>
			</dependency>

			<dependency>
				<artifactId>opennlp-tools</artifactId>
				<groupId>${project.groupId}</groupId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<artifactId>opennlp-tools</artifactId>
				<groupId>${project.groupId}</groupId>
				<version>${project.version}</version>
				<type>test-jar</type>
			</dependency>

			<dependency>
				<artifactId>opennlp-uima</artifactId>
				<groupId>${project.groupId}</groupId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
                <artifactId>opennlp-brat-annotator</artifactId>
                <groupId>${project.groupId}</groupId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <artifactId>opennlp-morfologik-addon</artifactId>
                <groupId>${project.groupId}</groupId>
                <version>${project.version}</version>
            </dependency>

		</dependencies>
	</dependencyManagement>

	<properties>
		<!-- Build Properties -->
		<java.version>11</java.version>
		<maven.version>3.3.9</maven.version>
		<commons.io.version>2.6</commons.io.version>
		<enforcer.plugin.version>3.0.0-M2</enforcer.plugin.version>
		<glassfish.version>2.30.1</glassfish.version>
		<junit.version>4.13.1</junit.version>
		<morfologik.version>2.1.7</morfologik.version>
		<osgi.version>4.2.0</osgi.version>
		<checkstyle.plugin.version>2.17</checkstyle.plugin.version>
		<onnxruntime.version>1.10.0</onnxruntime.version>
		<opennlp.forkCount>1.0C</opennlp.forkCount>
		<coveralls.maven.plugin>4.3.0</coveralls.maven.plugin>
		<jacoco.maven.plugin>0.7.9</jacoco.maven.plugin>
		<maven.surefire.plugin>2.22.2</maven.surefire.plugin>
		<maven.failsafe.plugin>2.22.2</maven.failsafe.plugin>
		<mockito.version>3.9.0</mockito.version>
	</properties>

	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-release-plugin</artifactId>
					<configuration>
						<useReleaseProfile>false</useReleaseProfile>
						<goals>deploy</goals>
						<arguments>-Papache-release</arguments>
						<mavenExecutorId>forked-path</mavenExecutorId>
					</configuration>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-assembly-plugin</artifactId>
					<version>3.2.0</version>
				</plugin>

				<plugin>
					<groupId>org.apache.felix</groupId>
					<artifactId>maven-bundle-plugin</artifactId>
					<version>5.1.4</version>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-checkstyle-plugin</artifactId>
					<version>${checkstyle.plugin.version}</version>
					<dependencies>
						<dependency>
							<groupId>com.puppycrawl.tools</groupId>
							<artifactId>checkstyle</artifactId>
							<version>7.2</version>
						</dependency>
					</dependencies>
					<executions>
						<execution>
							<id>validate</id>
							<phase>validate</phase>
							<configuration>
								<configLocation>checkstyle.xml</configLocation>
								<encoding>UTF-8</encoding>
								<consoleOutput>true</consoleOutput>
								<includeTestSourceDirectory>true</includeTestSourceDirectory>
								<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
								<violationSeverity>error</violationSeverity>
								<failOnViolation>true</failOnViolation>
							</configuration>
							<goals>
								<goal>check</goal>
							</goals>
						</execution>
					</executions>
				</plugin>

				<!-- Coverage analysis for tests -->
				<plugin>
					<groupId>org.jacoco</groupId>
					<artifactId>jacoco-maven-plugin</artifactId>
					<version>${jacoco.maven.plugin}</version>
					<configuration>
						<excludes>
                            <exclude>**/stemmer/*</exclude>
							<exclude>**/stemmer/snowball/*</exclude>
                        </excludes>
					</configuration>
					<executions>
						<execution>
							<id>jacoco-prepare-agent</id>
							<goals>
								<goal>prepare-agent</goal>
							</goals>
						</execution>
						<execution>
							<id>jacoco-prepare-agent-integration</id>
							<goals>
								<goal>prepare-agent-integration</goal>
							</goals>
						</execution>
						<execution>
							<id>jacoco-report</id>
							<phase>verify</phase>
							<goals>
								<goal>report</goal>
							</goals>
						</execution>
					</executions>
				</plugin>

				<!-- Report jacoco coverage to coveralls.io -->
				<plugin>
					<groupId>org.eluder.coveralls</groupId>
					<artifactId>coveralls-maven-plugin</artifactId>
					<version>${coveralls.maven.plugin}</version>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>${maven.surefire.plugin}</version>
					<configuration>
						<argLine>-Xmx2048m</argLine>
						<forkCount>${opennlp.forkCount}</forkCount>
						<failIfNoSpecifiedTests>false</failIfNoSpecifiedTests>
						<excludes>
							<exclude>**/stemmer/*</exclude>
							<exclude>**/stemmer/snowball/*</exclude>
							<exclude>**/*IT.java</exclude>
						</excludes>
					</configuration>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-failsafe-plugin</artifactId>
					<version>${maven.failsafe.plugin}</version>
					<executions>
						<execution>
							<id>integration-test</id>
							<goals>
								<goal>integration-test</goal>
								<goal>verify</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<excludes>
							<exclude>**/*Test.java</exclude>
						</excludes>
						<includes>
							<include>**/*IT.java</include>
						</includes>
					</configuration>
				</plugin>

				<plugin>
					<groupId>de.thetaphi</groupId>
					<artifactId>forbiddenapis</artifactId>
					<version>2.7</version>
					<configuration>
						<failOnUnsupportedJava>false</failOnUnsupportedJava>
						<bundledSignatures>
							<bundledSignature>jdk-deprecated</bundledSignature>
							<bundledSignature>jdk-non-portable</bundledSignature>
						</bundledSignatures>
					</configuration>
					<executions>
						<execution>
							<phase>validate</phase>
							<goals>
								<goal>check</goal>
								<goal>testCheck</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</pluginManagement>

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.10.1</version>
				<configuration>
					<release>${java.version}</release>
					<compilerArgument>-Xlint</compilerArgument>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.rat</groupId>
				<artifactId>apache-rat-plugin</artifactId>
				<executions>
					<execution>
						<id>default-cli</id>
						<goals>
							<goal>check</goal>
						</goals>
						<phase>verify</phase>
						<configuration>
							<excludes>
								<!-- File generated by maven-release-plugin -->
								<exclude>release.properties</exclude>
							</excludes>
							<numUnapprovedLicenses>1000000</numUnapprovedLicenses>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>3.1.1</version>
				<configuration>
					<doclint>none</doclint>
					<source>8</source>
					<sourcepath>src/main/java</sourcepath>
				</configuration>
				<executions>
					<execution>
						<id>create-javadoc-jar</id>
						<goals>
							<goal>jar</goal>
						</goals>
						<phase>package</phase>
						<configuration>
							<show>public</show>
							<quiet>false</quiet>
							<use>false</use> <!-- Speeds up the build of the javadocs -->
						</configuration>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<artifactId>maven-source-plugin</artifactId>
				<executions>
					<execution>
						<id>create-source-jar</id>
						<goals>
							<goal>jar</goal>
						</goals>
						<phase>package</phase>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-eclipse-plugin</artifactId>
				<version>2.10</version>
				<configuration>
					<workspace>../</workspace>
					<workspaceCodeStylesURL>http://opennlp.apache.org/code-formatter/OpenNLP-Eclipse-Formatter.xml</workspaceCodeStylesURL>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-enforcer-plugin</artifactId>
				<version>${enforcer.plugin.version}</version>
				<executions>
					<execution>
						<id>enforce-java</id>
						<goals>
							<goal>enforce</goal>
						</goals>
						<configuration>
						<rules>
							<requireJavaVersion>
								<message>Java 8 or higher is required to compile this module</message>
								<version>[${java.version},)</version>
							</requireJavaVersion>
							<requireMavenVersion>
								<message>Maven 3.3.9 or higher is required to compile this module</message>
								<version>[${maven.version},)</version>
							</requireMavenVersion>
						</rules>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
			</plugin>

			<plugin>
				<groupId>de.thetaphi</groupId>
				<artifactId>forbiddenapis</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-checkstyle-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

	<profiles>
		<profile>
		<id>apache-release</id>
		<build>
			<plugins>
				<plugin>
					<groupId>org.apache.rat</groupId>
					<artifactId>apache-rat-plugin</artifactId>
					<configuration>
						<excludes>
							<excludesFile>rat-excludes</excludesFile>
						</excludes>
					</configuration>
					<executions>
						<execution>
							<id>default-cli</id>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</build>
		</profile>

		<profile>
			<id>jacoco</id>
			<properties>
				<opennlp.forkCount>1</opennlp.forkCount>
			</properties>
			<build>
				<plugins>
					<plugin>
						<groupId>org.jacoco</groupId>
						<artifactId>jacoco-maven-plugin</artifactId>
					</plugin>
				</plugins>
			</build>
		</profile>

		<profile>
			<id>eval-tests</id>
			<properties>
				<opennlp.forkCount>0.5C</opennlp.forkCount>
			</properties>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-surefire-plugin</artifactId>
						<version>${maven.surefire.plugin}</version>
						<configuration>
							<argLine>-Xmx4g</argLine>
							<includes>
								<include>**/*Test.java</include>
								<include>**/*Eval.java</include>
							</includes>
							<excludedGroups>opennlp.tools.HighMemoryUsage</excludedGroups>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>

		<profile>
			<id>high-memory-tests</id>
			<properties>
				<opennlp.forkCount>1</opennlp.forkCount>
			</properties>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-surefire-plugin</artifactId>
						<version>${maven.surefire.plugin}</version>
						<configuration>
							<argLine>-Xmx20g</argLine>
							<includes>
								<include>**/*Test.java</include>
								<include>**/*Eval.java</include>
							</includes>
							<groups>opennlp.tools.HighMemoryUsage</groups>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

	<modules>
		<module>opennlp-tools</module>
		<module>opennlp-uima</module>
		<module>opennlp-brat-annotator</module>
		<module>opennlp-morfologik-addon</module>
		<module>opennlp-docs</module>
		<module>opennlp-distr</module>
		<module>opennlp-dl</module>
  </modules>

</project>
