<?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.uima</groupId>
    <artifactId>parent-pom</artifactId>
    <version>13</version>
    <relativePath />
  </parent>

  <artifactId>ruta-parent</artifactId>
  <packaging>pom</packaging>
  <version>3.0.2-SNAPSHOT</version>
  <name>Apache UIMA Ruta: ${project.artifactId}</name>
  <url>${uimaWebsiteUrl}</url>
  <inceptionYear>2011</inceptionYear>
  <description>The common parent pom for the UIMA Ruta</description>

  <!-- Special inheritance note
    even though the <scm> element that follows is exactly the
    same as those in super poms, it cannot be inherited because
    there is some special code that computes the connection elements
    from the chain of parent poms, if this is omitted.

    Keeping this a bit factored allows cutting/pasting the <scm>
    element, and just changing the following two properties -->
  <scm>
    <connection>scm:git:git://github.com/apache/uima-ruta</connection>
    <developerConnection>scm:git:git@github.com:apache/uima-ruta.git</developerConnection>
    <url>https://github.com/apache/uima-ruta</url>
    <tag>HEAD</tag>
  </scm>

  <!-- The repositories and pluginRepositories section is duplicated from the parent pom one, and adds
    the Apache Snapshot Nexus repository where UIMA snapshots are deployed. This is needed if for instance,
    a project depends on some new SNAPSHOT level of a build tool, where the users hasn't checked out 
    the
    build tooling. This allows maven to find the snapshots when looking for the parent of this pom -->
  <repositories>
    <repository>
      <id>eclipsePlugins</id>
      <name>Eclipse components</name>
      <layout>default</layout>
      <url>https://repo1.maven.org/eclipse</url>

      <releases>
        <updatePolicy>never</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
      </releases>

      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>

    <!-- modify central repository access: Turn on checksum checking -->
    <repository>
      <id>central</id>
      <name>Maven Repository Switchboard</name>
      <layout>default</layout>
      <url>https://repo1.maven.org/maven2</url>

      <releases>
        <enabled>true</enabled>
        <checksumPolicy>fail</checksumPolicy>
        <updatePolicy>never</updatePolicy>
      </releases>

      <snapshots>
        <enabled>false</enabled>
      </snapshots>

    </repository>

    <repository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>https://repository.apache.org/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>apache.snapshots.plugins</id>
      <name>Apache Snapshot Repository - Maven plugins</name>
      <url>https://repository.apache.org/snapshots</url>
      <layout>default</layout>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <checksumPolicy>fail</checksumPolicy>
        <updatePolicy>never</updatePolicy>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

  <properties>
    <uniWueNoticeText>Portions of UIMA Ruta were originally developed by
      the Universität Würzburg.
      Copyright (c) 2006, 2011 Universität Würzburg.</uniWueNoticeText>
    <postNoticeText>${uniWueNoticeText}

      This product contains icons developed by Mark James
      (http://www.famfamfam.com/lab/icons/silk/), licensed under the
      Creative Commons Attribution 3.0 License.
    </postNoticeText>
    <uimaVersion>3.1.1</uimaVersion>
    <uimafit-version>3.0.0</uimafit-version>
    <spring-version>4.3.22.RELEASE</spring-version>
    <!--
      BACKWARD_COMPATIBLE_IMPLEMENTER - patch version (=.=.+)
      BACKWARD_COMPATIBLE_USER - minor version (=.+.0)
      NON_BACKWARD_COMPATIBLE - major version (+.0.0)
    -->

    <compat.level>NON_BACKWARD_COMPATIBLE</compat.level>
    <compat.previous.version>2.6.0</compat.previous.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
    <api_check_oldVersion>2.6.1</api_check_oldVersion>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        <version>1.7.24</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.uima</groupId>
          <artifactId>uima-build-helper-maven-plugin</artifactId>
          <version>7</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>${maven.compiler.source}</source>
            <target>${maven.compiler.target}</target>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <configuration>
                <source>${maven.compiler.source}</source>
              </configuration>
            </execution>
          </executions>
          <configuration>
            <source>${maven.compiler.source}</source>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-versions</id>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>3.0</version>
                </requireMavenVersion>
                <requireJavaVersion>
                  <version>${maven.compiler.target}</version>
                </requireJavaVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy customized bin LICENSE file</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/classes/META-INF</outputDirectory>
              <resources>
                <resource>
                  <directory>src/main/readme_bin</directory>
                  <includes>
                    <include>LICENSE</include>
                    <include>NOTICE</include>
                  </includes>
                  <filtering>true</filtering>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>enforce-compatibility</id>
      <activation>
        <file>
          <exists>marker-file-identifying-api-compatibility-check</exists>
        </file>
      </activation>
      <build>
        <!-- https://issues.apache.org/jira/browse/UIMA-5307

          <plugin>
          <artifactId>maven-enforcer-plugin</artifactId>
          <dependencies>
          <dependency>
          <groupId>org.semver</groupId>
          <artifactId>enforcer-rule</artifactId>
          <version>0.9.33</version>
          </dependency>
          </dependencies>
          <executions>
          <execution>
          <id>enforce-compatibility</id>
          <phase>verify</phase>
          <goals>
          <goal>enforce</goal>
          </goals>
          <configuration>
          <rules>
          <requireBackwardCompatibility implementation="org.semver.enforcer.RequireBackwardCompatibility">
          <previousVersion>${compat.previous.version}</previousVersion>
          <dumpDetails>true</dumpDetails>
          <compatibilityType>${compat.level}</compatibilityType>
          <excludes>
          <exclude>**/impl/**/*</exclude>
          <exclude>**/internal/**/*</exclude>
          <exclude>org/apache/uima/cas/CASRuntimeException</exclude>
          <exclude>org/apache/uima/cas/SerialFormat</exclude>
          <exclude>org/apache/uima/util/CasIOUtils</exclude>
          <exclude>org/apache/uima/util/CasLoadMode</exclude>
          </excludes>
          </requireBackwardCompatibility>
          </rules>
          </configuration>
          </execution>
          </executions>
          </plugin>
        -->
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.rat</groupId>
              <artifactId>apache-rat-plugin</artifactId>
              <executions>
                <execution>
                  <id>default-cli</id>
                  <configuration>
                    <consoleOutput>true</consoleOutput>
                    <excludes combine.children="append">
                      <exclude>**/api-change-report/**/*.*</exclude>
                      &gt;
                    </excludes>
                  </configuration>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </pluginManagement>

        <plugins>
          <!-- https://siom79.github.io/japicmp/MavenPlugin.html -->
          <plugin>
            <groupId>com.github.siom79.japicmp</groupId>
            <artifactId>japicmp-maven-plugin</artifactId>
            <version>0.13.0</version>
            <configuration>
              <skip>true</skip>
              <oldVersion>
                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>${project.artifactId}</artifactId>
                  <version>${api_check_oldVersion}</version>
                </dependency>
              </oldVersion>
              <parameter>
                <onlyModified>true</onlyModified>
                <excludes>
                  <exclude>org.apache.uima.ruta.type</exclude>
                  <exclude>org.apache.uima.ruta.parser.RutaParser</exclude>
                </excludes>
                <!-- filter out classes with impl in their package or class name -->
                <!-- <postAnalysisScript>${project.basedir}/../ruta-parent/src/main/groovy/api-report.groovy</postAnalysisScript> -->
              </parameter>
            </configuration>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>cmp</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          <!-- This copy is to have the api change report included in the source distribution -->
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>copy-API-change-report</id>
                <phase>install</phase>
                <!-- must follow verify -->
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
                    <if>
                      <available file="${project.build.directory}/japicmp/" />
                      <then>
                        <copy toDir="${basedir}/api-change-report">
                          <fileset dir="${project.build.directory}/japicmp" />
                        </copy>
                      </then>
                    </if>
                  </target>
                </configuration>
              </execution>
            </executions>

          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
