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

<!--
  This is the common UIMA parent pom.
  It contains the project-wide defaults:
  
    The parent of this POM is the official common Apache POM
    
    Defines repositories for
      Snapshots - at Apache - used during development, and for docbook olinks 
      Eclipse - where the good poms are
      Central - adds default check-the checksums
      
    PluginManagement defaults:
      Java 1.6 as the base
      Javadoc at 1.6 too
      Jar Manifest entries, including the build-time
      AntRun to pick a later version of ant with support for ant extensions like "if"
      
    Specify plugin levels for non-standard plugins:
      RAT
      eclipse   
    
-->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

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

  <groupId>org.apache.uima</groupId>
  <artifactId>parent-pom</artifactId>
  <version>16-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache UIMA ${project.artifactId}</name>
  <description>
    UIMA (Unstructured Information Management Architecture).
    UIMA promotes community development and reuse of annotators
    that extract metadata from unstructured information (text, audio, video, etc.);
    it provides for externalized declaration of type systems,
    component configuration, aggregation, and more,
    supports scalablity, and provides tooling.
  </description>

  <url>${uimaWebsiteUrl}</url>
  <inceptionYear>2006</inceptionYear>

  <mailingLists>
    <mailingList>
      <name>Apache UIMA Development List</name>
      <subscribe>dev-subscribe@uima.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@uima.apache.org</unsubscribe>
      <post>mailto:dev@uima.apache.org</post>
      <archive>https://lists.apache.org/list.html?dev@uima.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>Apache UIMA Users List</name>
      <subscribe>user-subscribe@uima.apache.org</subscribe>
      <unsubscribe>user-unsubscribe@uima.apache.org</unsubscribe>
      <post>mailto:user@uima.apache.org</post>
      <archive>https://lists.apache.org/list.html?user@uima.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>Apache UIMA Commits List</name>
      <subscribe>commits-subscribe@uima.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@uima.apache.org</unsubscribe>
      <post>mailto:commits@uima.apache.org</post>
      <archive>https://lists.apache.org/list.html?commits@uima.apache.org</archive>
    </mailingList>
  </mailingLists>

  <scm>
    <connection>scm:git:https://github.com/apache/uima-parent-pom</connection>
    <developerConnection>scm:git:https://github.com/apache/uima-parent-pom</developerConnection>
    <url>https://github.com/apache/uima-parent-pom</url>
    <tag>HEAD</tag>
  </scm>

  <issueManagement>
    <system>Jira</system>
    <!-- the form of the url is from https://maven.apache.org/plugins/maven-changes-plugin/usage.html -->
    <!--url>https://issues.apache.org/jira/BrowseProject.jspa?projectId=12310570</url-->
    <url>https://issues.apache.org/jira/browse/UIMA</url>
  </issueManagement>

  <ciManagement>
    <system>Jenkins</system>
    <url>https://ci-builds.apache.org/</url>
    <notifiers />
  </ciManagement>
  
  <!-- distribution management - is inherited from Apache POM
       and specifies 
         https://repository.apache.org/service/local/staging/deploy/maven2
       and for snapshots:
         https://repository.apache.org/content/repositories/snapshots -->
  <!-- for children POMs maven automatically adds their artifactId to the URL below
       unless overridden -->
  <distributionManagement>
    <site>
      <id>uima.apache.org</id> <!-- following maven convention -->
      <name>Apache UIMA Website</name>
      <url>${uimaWebsiteDistributionUrl}</url>  <!-- on people.apache.org: /www/uima.apache.org -->
    </site>
  </distributionManagement>

  <properties>
    <!--  
      This property is overridden in child projects that are released, to correspond to the 
      Jira release category(ies) We specify something here, because if accidentally left blank, it 
      generates a giant request for all changes
    -->
    <!-- for parent-pom-14. Change for each release -->
    <jiraVersion>parent-pom-15</jiraVersion>  
    <!--  *********************************************************************************************************** -->
    <!--                                 U  G  H   change manually for release (to remove -SNAPSHOT                 * -->
    <!--  *********************************************************************************************************** -->
    <!--  *********************************************************************************************************** -->
    <!--  *********************************************************************************************************** -->
    <uimaBuildResourcesVersion>6</uimaBuildResourcesVersion>
    <uimaWebsiteUrl>https://uima.apache.org</uimaWebsiteUrl>
    <uimaWebsiteDistributionUrl>scp://people.apache.org/www/uima.apache.org/</uimaWebsiteDistributionUrl>
    <maven.build.timestamp.format>yyMMdd_HHmm</maven.build.timestamp.format>
    <buildDateTime>${maven.build.timestamp}</buildDateTime>

    <!-- these properties are for docbook processing. -->     
    <!-- olink databases -->
    <dolArtifactId>uima-docbook-olink</dolArtifactId>
    <dolClassifier>olink</dolClassifier>
    <dolRepo>${settings.localRepository}/org/apache/uima/${dolArtifactId}/1-SNAPSHOT</dolRepo>
    <dolZip>${dolArtifactId}-1-SNAPSHOT-${dolClassifier}.zip</dolZip>
    <dolUnzipped>${dolRepo}/docbook-olink</dolUnzipped>
    <dolBuiltFile>${project.build.directory}/</dolBuiltFile>
    <dolBuiltArtifactFile>${project.build.directory}/${dolZip}</dolBuiltArtifactFile>

    <pdfPaperType>USletter</pdfPaperType>
    
    <!-- This next dir *must match* the one the PearPackagingMavenPlugin uses -->
    <pearPackagingDir>${project.build.directory}/pearPackaging</pearPackagingDir>    
  
    <!-- poms wanting this need to set the postNoticeText to this value -->
    <ibmNoticeText>
      Portions of Apache UIMA were originally developed by
      International Business
      Machines Corporation and are
      licensed to the Apache Software Foundation under the
      "Software
      Grant License Agreement", informally known as the
      "IBM UIMA License Agreement".
      Copyright (c)
      2003, 2006 IBM Corporation.
    </ibmNoticeText> 
    <!-- next line commented out - to let standard source-release assembly descriptor as specified
         in standard Apache parent pom be used -->
    <!-- SourceReleaseAssemblyDescriptor>multimodule-source-release</sourceReleaseAssemblyDescriptor--> 

  <!-- ============================================= -->
  <!-- *  V E R S I O N S                            -->
  <!-- *  most inherited from apache-wide parent pom -->
  <!-- ============================================= -->
    <maven.version>3.2.2</maven.version>
    <!-- Tycho requires at least Java 11 -->
    <javaVersionMinBuild>11</javaVersionMinBuild>
    <felix.bundle.version>3.3.0</felix.bundle.version>

    <maven.surefire.heap>512m</maven.surefire.heap>
  </properties>

  <repositories>
    <!-- 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>
  </repositories>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-remote-resources-plugin</artifactId>
          <version>1.7.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-plugin</artifactId>
          <version>1.12.2</version>
        </plugin>

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

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
          <configuration> 
            <!-- https://issues.apache.org/jira/browse/UIMA-5367 -->
            <retryFailedDeploymentCount>10</retryFailedDeploymentCount>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.2.1</version>
        </plugin>

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

        <plugin>
          <groupId>net.nicoulaj.maven.plugins</groupId>
          <artifactId>checksum-maven-plugin</artifactId>
          <version>1.11</version>
        </plugin>

        <!-- assembly plugin 
             Disable running assembly:assembly with
             warning message to use install instead -->
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.3.0</version>
          <executions>
            <execution>
              <id>default-cli</id>
              <configuration>
                <descriptors>
                  <descriptor>do-not-use--mvn-assembly-assembly--instead-use-mvn-install</descriptor>
                </descriptors>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>buildnumber-maven-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-plugin-plugin</artifactId>
          <version>3.6.4</version>
          <executions>
            <execution>
              <!-- force to use process-classes phase so runs after Java Annotations are available -->
              <!-- https://jira.codehaus.org/browse/MPLUGIN-267 -->
              <id>default-descriptor</id>
              <phase>process-classes</phase>
            </execution>
            <execution>
              <id>generate-helpmojo</id>
              <goals>
                <goal>helpmojo</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <extractors>
              <extractor>java-annotations</extractor>
            </extractors>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-toolchains-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.10.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.4.0</version>
          <configuration>
            <source>${maven.compiler.source}</source>
            <!-- https://issues.apache.org/jira/browse/UIMA-5369 -->
            <javadocVersion>${maven.compiler.source}</javadocVersion>
            <notimestamp>true</notimestamp>
            <encoding>UTF-8</encoding>
            <!-- if next is omitted, causes all projects in reactor that don't
                     already have full javadocs built, to have them built -->
            <detectOfflineLinks>false</detectOfflineLinks>
            <quiet>true</quiet>
            <!-- identify tags we use so we don't get warning messages for them -->
            <tags>
              <tag>
                <name>generated</name>
                <placement>X</placement>
              </tag>
              <tag>
                <name>ordered</name>
                <placement>X</placement>
              </tag>
              <tag>
                <name>modifiable</name>
                <placement>X</placement>
              </tag>
              <tag>
                <name>model</name>
                <placement>X</placement>
              </tag>
              <tag>
                <name>pre</name>
                <placement>X</placement>
              </tag>
            </tags>
          </configuration>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <goals>
                <goal>jar</goal>
              </goals>
              <!-- turn off javadoc build for each module by default
                   (unless apache-release - for speed) 
                   override in individual cases to turn back on if wanted -->
              <phase />
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.2.2</version>
          <configuration>
            <archive>
              <manifestEntries>
                <Project-Title>Apache UIMA</Project-Title>
                <!-- Implementation-Title>${pom.name}</Implementation-Title from addDefaultImplementationEntries-->
                <!-- Implementation-Version>${pom.version}</Implementation-Version from addDefaultImplementationEntries-->
                <!-- Implementation-Vendor>Apache Software Foundation</Implementation-Vendor from addDefaultImplementationEntries-->
                <!-- also added by default: 
                       Implementation-Vendor-Id: ${pom.groupId} -->
                <Implementation-Url>${uimaWebsiteUrl}</Implementation-Url>
                <Implementation-License>https://www.apache.org/licenses/LICENSE-2.0.txt</Implementation-License>
                <Build-Date>${buildDateTime}</Build-Date>
              </manifestEntries>
              <manifest>
                <addDefaultSpecificationEntries>false</addDefaultSpecificationEntries>
              </manifest>
            </archive>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>3.1.0</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.ant</groupId>
              <artifactId>ant</artifactId>
              <version>1.10.12</version>
            </dependency>
            <dependency> <!-- for ant extension supporting "if" -->
              <groupId>ant-contrib</groupId>
              <artifactId>ant-contrib</artifactId>
              <version>20020829</version>
            </dependency>
            <!-- <containsregexp> form for filesets -->
            <dependency>
              <groupId>org.apache.ant</groupId>
              <artifactId>ant-apache-regexp</artifactId>
              <version>1.10.12</version>
            </dependency>
          </dependencies>
        </plugin>

        <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>5.1.6</version>
          <extensions>true</extensions>
          <executions>
            <execution>
              <id>uima-bundle</id>
              <goals>
                <goal>manifest</goal>
              </goals>
              <phase>process-classes</phase>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <version>0.13</version>
          <executions>
            <execution>
              <id>default-cli</id>
              <goals>
                <goal>check</goal>
              </goals>
              <phase>verify</phase>
              <!-- default configuration -->
              <configuration>
                <consoleOutput>true</consoleOutput>
                <excludes>
                  <exclude>**/.tycho-consumer-pom.xml</exclude>
                  <exclude>.github/**/*</exclude> <!-- GitHub config/template files -->
                  <exclude>release.properties</exclude> <!-- generated file -->
                  <exclude>README*</exclude>
                  <exclude>RELEASE_NOTES*</exclude>
                  <exclude>issuesFixed/**</exclude> <!-- generated file -->
                  <!-- Maven profile trigger files -->
                  <exclude>**/marker-file-identifying-*</exclude>
                  <exclude>**/marker-file-enabling-*</exclude>
                  <exclude>DEPENDENCIES</exclude>  <!-- generated file -->
                  <exclude>**/MANIFEST.MF</exclude> <!-- MANIFEST.MF files cannot have comments -->
                  <exclude>**/*.ppt</exclude> <!--  power point sources -->
                  <exclude>**/*.sha512</exclude>
                  <exclude>**/*.patch.txt</exclude>
                  <exclude>**/.factorypath</exclude> <!-- Eclipse APT generated file -->
                  <exclude>**/.idea/**</exclude> <!-- IDEA config files -->
                  <exclude>**/.settings/**</exclude> <!-- Eclipse config files -->
                  <exclude>**/.project</exclude> <!-- Eclipse config files -->
                  <exclude>**/.classpath</exclude> <!-- Eclipse config files -->
                </excludes>
              </configuration>
            </execution>
          </executions>
        </plugin>
        
        <!-- generate the issuesFixed report of Jiras fixed in this release -->
        <!-- uses the property "jiraVersion" to select the version -->
        <!-- Runs automatically during release.
             Can also be run manually using 
             mvn changes:jira-report -N -DjiraVersion=xxxxxx  where
             xxxxxx is the jira internal version number which you can get 
             from the Jira url (see parameter fixforversion=xxxxxx) 
             by going to https://issues.apache.org/jira/browse/UIMA 
             and selecting "Releases" and then going to the 
             particular version and looking in the url for
             that version. -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-changes-plugin</artifactId>
          <version>2.12.1</version>
          <dependencies> <!-- needed for java 11 -->
            <dependency>
              <groupId>javax.annotation</groupId>
              <artifactId>javax.annotation-api</artifactId>
              <version>1.3.2</version>
            </dependency>
          </dependencies>
          <executions>
            <execution>
              <id>default-cli</id>
              <goals>
                <goal>jira-report</goal>
              </goals>
              <!-- don't use generate-sources - because javadoc plugin re-exec's that -->
              <phase>generate-resources</phase>
              <configuration>
                <useJql>true</useJql>
                <fixVersionIds>${jiraVersion}</fixVersionIds>
                <columnNames>Type,Key,Status,Summary</columnNames>
                <resolutionIds>Fixed</resolutionIds>
                <statusIds>Closed,Resolved</statusIds>
                <sortColumnNames>Type, Key</sortColumnNames>
                <!-- changed sortColumnNames for Jira 5
                     was: <sortColumnNames>Status, Key, Type</sortColumnNames>
                 -->
                <outputDirectory>${basedir}/issuesFixed/</outputDirectory>
                <maxEntries>1000</maxEntries> <!-- hopefully, bigger than ever needed -->
              </configuration>
            </execution>
          </executions>
        </plugin>

        <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-enforcer-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-versions</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>${maven.version}</version>
                </requireMavenVersion>
                <requireJavaVersion>
                  <version>${javaVersionMinBuild}</version>
                </requireJavaVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
            
      <!-- sets the following properties:
            parsedVersion.majorVersion
            parsedVersion.minorVersion
            parsedVersion.incrementalVersion
            parsedVersion.qualifier
            parsedVersion.buildNumber
            parsedVersion.osgiVersion
      -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>parse-project-version</id>
            <goals>
              <goal>parse-version</goal>
            </goals>
            <configuration>
              <propertyPrefix>parsedVersion</propertyPrefix>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.uima</groupId>
        <artifactId>uima-build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>set buildYear and buildMonth</id>
            <goals>
              <goal>parse-date-time</goal>
            </goals>
            <configuration>
              <parseSpecs>
                <parseSpec>
                  <name>buildYear</name>
                  <format>yyyy</format>
                </parseSpec>
                <parseSpec>
                  <name>buildMonth</name>
                  <format>MMMM</format>
                </parseSpec>
              </parseSpecs>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- this overrides the apache pom to 
           use this resource bundle which
           allows additional text after the NOTICE file
           
           Note: putting this in the pluginManagement section
           fails to override the configuration from the
           Apache common parent pom -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-remote-resources-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>process</goal>
            </goals>
            <configuration>
              <resourceBundles>
                <resourceBundle>org.apache.uima:uima-build-resources:${uimaBuildResourcesVersion}</resourceBundle>
              </resourceBundles>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin> <!-- https://issues.apache.org/jira/browse/UIMA-2966  -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>fix-text-file-line-endings</id>
            <goals>
              <goal>run</goal>
            </goals>
            <phase>compile</phase>
            <configuration>
              <target>
                <taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
                <if>
                  <available file="${project.build.outputDirectory}" />
                  <then>
                    <fixcrlf srcdir="${project.build.outputDirectory}">
                      <include name="**/META-INF/DEPENDENCIES" />
                      <include name="**/META-INF/LICENSE" />
                      <include name="**/META-INF/NOTICE" />
                    </fixcrlf>
                  </then>
                </if>
              </target>
            </configuration>
          </execution>
          <execution>
            <id>dup-meta-jar-cleanup</id>
            <goals>
              <goal>run</goal>
            </goals>
            <phase>prepare-package</phase>  <!--  before Jar plugin -->
            <configuration>
              <target>
                <delete file="${project.build.directory}/classes/META-INF/maven/${project.groupId}/${project.artifactId}/pom.xml" quiet="true" />
                <delete file="${project.build.directory}/classes/META-INF/maven/${project.groupId}/${project.artifactId}/pom.properties" quiet="true" />
              </target>
            </configuration>
          </execution>
                 </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <autoVersionSubmodules>true</autoVersionSubmodules>
        </configuration>
      </plugin>
    </plugins>
  </build>
  
  <!--reporting-->

  <profiles>
    <!-- ************************************************** -->
    <!-- * apache-release                                 * -->
    <!-- *   NOTE: This profile is activated while        * -->
    <!-- *    running the Maven build pipeline, usually   * -->
    <!-- *      clean verify (for mvn release:prepare) or * -->
    <!-- *      deploy (for mvn release;perform),         * -->
    <!-- *    but is not activated for the                * -->
    <!-- *    outer execution for mvn release...          * -->
    <!-- *    on the pom being released                   * -->
    <!-- ************************************************** -->
    <!-- fix apache common pom -->
    <profile>
      <id>apache-release</id>
      <properties>
        <isApacheRelease>true</isApacheRelease>
      </properties>

      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <executions>
                <execution>
                  <id>attach-javadocs</id>
                  <goals>
                    <goal>jar</goal>
                  </goals>
                  <!-- turn back on javadoc build for each module by default  
                       https://issues.apache.org/jira/browse/UIMA-3251 -->
                  <phase>package</phase>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </pluginManagement>

        <plugins>
          <!-- to support multi-module source-release builds -->
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <dependencies>
              <dependency>
                <groupId>org.apache.uima</groupId>
                <artifactId>uima-build-resources</artifactId>
                <version>${uimaBuildResourcesVersion}</version>
              </dependency>
            </dependencies>
            <executions>
              <execution>
                <id>source-release-assembly</id>
                <!-- note: this is configured above to run only at execution root -->
                <configuration>
                  <!-- by not attaching, we prevent the source release from going to Maven repos -->
                  <!-- https://issues.apache.org/jira/browse/UIMA-3247 -->
                  <attach>false</attach>
                </configuration>
              </execution>
            </executions>
          </plugin>
        
          <!-- to run source plugin without forking -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources-nf</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
              <execution>
                <id>attach-sources</id>
                <phase />  <!-- turn off the plain jar one -->
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <executions>
              <execution>
                <id>default-cli</id>
              </execution>
            </executions>
          </plugin>
          
          <!-- to fix up any generated Javadocs to have consistent line ends in html files -->
          <!-- runs in several phases after package -->
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>maybe-fix-javadoc-line-ends</id>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
                    <if>
                      <available file="${project.build.directory}/site/apidocs/" />
                      <then>
                        <echo>Fixing line-endings for ${project.build.directory}/site/apidocs/</echo>
                        <fixcrlf srcdir="${project.build.directory}/site/apidocs/">
                          <include name="**/*.html" />
                        </fixcrlf>
                      </then>
                    </if>
                  </target>
                </configuration>
              </execution>
              <execution>
                <id>copy-pom-to-target</id>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <!-- copy to target so checksum-maven-plugin can sha512 checkum it -->
                  <target>
                    <taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
                    <if>
                      <!-- 
                        - In some Tycho modules (e.g. feature modules), Tycho generates a "consumer
                        - pom" which may contain additional information injected by Tycho based on
                        - the Eclipse metadata files. If such a consumer pom is present, we need
                        - to use it as a basis for calculating the SHA512 hash and the GPG signature
                        -->
                      <available file="${project.basedir}/.tycho-consumer-pom.xml" />
                      <then>
                        <property name="pom-file-src" location="${project.basedir}/.tycho-consumer-pom.xml" />
                      </then>
                      <else>
                        <property name="pom-file-src" location="${project.basedir}/pom.xml" />
                      </else>
                    </if>
                    <property name="pom-file-tgt" location="${project.build.directory}/${project.artifactId}-${project.version}.pom" />
                    <copy file="${pom-file-src}" tofile="${pom-file-tgt}" />
                  </target>
                </configuration>
              </execution>
              <execution>
                <!-- 
                  - The POM checksum needs a separate treatment because it is not included in the 
                  - attached artifacts.
                  - Cannot use checksum-maven-plugin:files here because of 
                  - https://github.com/nicoulaj/checksum-maven-plugin/issues/136
                  -->
                <id>pom-checksum</id>
                <phase>verify</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
                      <fileset dir="${project.build.directory}">
                        <include name="${project.artifactId}-${project.version}.pom" />
                      </fileset>
                    </checksum>
                  </target>
                </configuration>
              </execution>
              <execution>
                <id>sign and checksum source-release.zip</id>
                <phase>verify</phase>  <!-- after source-release is built -->
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
                    <property name="source-release" location="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" />
                    <if>
                      <available file="${source-release}" />
                      <then>
                        <echo message="Generating checksums for source-release.zip" />
                        <checksum format="MD5SUM" forceoverwrite="yes" algorithm="SHA-512" fileext=".sha512" file="${source-release}" />
                        <echo message="Generating gpg signatures for source-release.zip" />
                        <exec executable="gpg" failonerror="true">
                          <arg value="--detach-sign" />
                          <arg value="--armor" />
                          <arg value="--batch" />
                          <arg value="${source-release}" />
                        </exec>
                      </then>
                    </if>
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <executions>
              <execution>
                <id>load-plugin</id>
                <phase>validate</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
                <configuration>
                  <skip>true</skip>
                </configuration>
              </execution>
              <execution>
                <id>sign-release-artifacts</id>
                <configuration>
                  <excludes>
                    <exclude>**/*.sha512</exclude>
                    <exclude>**/*.asc</exclude>
                  </excludes>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>net.nicoulaj.maven.plugins</groupId>
            <artifactId>checksum-maven-plugin</artifactId>
            <executions>
              <!-- POM checksum is calculated separately above using antrun - see comment there -->
              <execution>
                <id>artifacts-checksum</id>
                <goals>
                  <goal>artifacts</goal>
                </goals>
                <configuration>
                  <attachChecksums>true</attachChecksums>
                  <appendFilename>true</appendFilename>
                  <algorithms>
                    <algorithm>SHA-512</algorithm>
                  </algorithms>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <!-- 
                  - The POM checksum needs a separate treatment because it is not included in the 
                  - attached artifacts.
                  -->
                <id>attach-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>attach-artifact</goal>
                </goals>
                <configuration>
                  <artifacts>
                    <artifact>
                      <file>${project.build.directory}/${project.artifactId}-${project.version}.pom.sha512</file>
                      <type>pom.sha512</type>
                    </artifact>
                  </artifacts>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>


    <!-- *************************************************** -->
    <!-- * Run Rat report                                  * -->
    <!-- *************************************************** -->
    <profile>
      <id>run-rat-report</id>

      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <executions>
              <execution>
                <id>default-cli</id>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- *********************************************** -->
    <!-- * Generate JIRA issues report                 * -->
    <!-- *********************************************** -->
    <profile>
      <id>mavenJirareport</id>
      <activation>
        <file>
          <exists>marker-file-identifying-parent-pom</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-remote-resources-plugin</artifactId>
          </plugin>

          <plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <executions>
              <execution>
                <id>clean-jira-changes-report</id>
                <phase>clean</phase>
                <goals>
                  <goal>clean</goal>
                </goals>
                <configuration>
                  <filesets>
                    <fileset>
                      <directory>issuesFixed</directory>
                    </fileset>
                  </filesets>
                </configuration>
              </execution>
            </executions>
          </plugin>
          
          <plugin>
            <artifactId>maven-changes-plugin</artifactId>
            <executions>
              <execution>
                <id>default-cli</id>
                <configuration>
                  <fixVersionIds>${jiraVersion}</fixVersionIds>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>


    <!-- ********************************** -->
    <!-- *   Docbook Processing           * -->
    <!-- ********************************** -->

    <!-- Skip docbook processing unless the leaf child project has a docbook directory -->
    <profile>
      <id>process-docbook</id>
      <activation>
        <file>
          <exists>src/docbook</exists>
        </file>
      </activation>

      <build>
        <plugins>
          <!-- 
            Use the dependency:unpack goal to get the shared resource that has the docbook-shared 
            directory. 
            
            Unpack into spot relative to project - because these are referred to in docbook sources
            using relative references
               
            Also unpack next to docbook-olink in repository location for olink info, because the 
            site.xml files use relative location to get at the uima entities
          -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <!-- 
                  Use the dependency:unpack goal to get the shared resource that has the 
                  docbook-shared directory 
                  
                  Unpack into spot relative to project - because these are referred to in docbook
                  sources using relative references 
                -->
                <id>copyDocbookInfo</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <overWriteIfNewer>true</overWriteIfNewer>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.apache.uima</groupId>
                      <artifactId>uima-build-resources</artifactId>
                      <version>${uimaBuildResourcesVersion}</version>
                      <includes>docbook-shared/**</includes>
                      <outputDirectory>${project.build.directory}</outputDirectory>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>

              <execution>
                <!-- 
                  Also unpack next to docbook-olink in repository location for olink info, because
                  the site.xml files use relative location to get at the UIMA entities
                -->
                <id>copyDocbookInfoNextToOlink</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <overWriteIfNewer>true</overWriteIfNewer>
                  <markersDirectory>${dolRepo}/dependency-maven-plugin-markers</markersDirectory>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.apache.uima</groupId>
                      <artifactId>uima-build-resources</artifactId>
                      <version>${uimaBuildResourcesVersion}</version>
                      <includes>docbook-shared/**</includes>
                      <outputDirectory>${dolRepo}</outputDirectory>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>

              <!-- use the dependency:unpack goal to get the olink databases  -->
              <execution>
                <id>getOlink</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <overWriteIfNewer>true</overWriteIfNewer>
                  <markersDirectory>${dolRepo}/dependency-maven-plugin-markers</markersDirectory>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.apache.uima</groupId>
                      <artifactId>${dolArtifactId}</artifactId>
                      <version>1-SNAPSHOT</version>
                      <type>zip</type>
                      <classifier>${dolClassifier}</classifier>
                      <outputDirectory>${dolUnzipped}</outputDirectory>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>com.agilejava.docbkx</groupId>
            <artifactId>docbkx-maven-plugin</artifactId>
            <version>2.0.17</version>
            <configuration>  <!-- general configuration for both HTML and PDF -->
              <sourceDirectory>${basedir}/src/docbook</sourceDirectory>
              <includes>${bookNameRoot}.xml</includes>
              <highlightSource>1</highlightSource>
              <xincludeSupported>true</xincludeSupported>
              <!-- olink common to PDF and HTML -->
              <collectXrefTargets>yes</collectXrefTargets>
            </configuration>
            <executions>
              <execution>
                <id>html</id>
                <goals>
                  <goal>generate-html</goal>
                </goals>
                <phase>package</phase>
                <configuration>
                  <targetDirectory>${project.build.directory}/site/d</targetDirectory>
                  <htmlCustomization>${project.build.directory}/docbook-shared/top/html-single.xsl</htmlCustomization>
                  <!-- olink -->
                  <targetDatabaseDocument>file:///${dolUnzipped}/htmlsingle/site.xml</targetDatabaseDocument>
                  <targetsFilename>${dolUnzipped}/htmlsingle/${bookNameRoot}.db</targetsFilename>
                </configuration>
              </execution>
              <execution>
                <id>pdf</id>
                <goals>
                  <goal>generate-pdf</goal>
                </goals>
                <phase>package</phase>
                <configuration>
                  <!-- 
                    PDF: generate first in docbkx, then move. Because PDF generates an extra temp
                    file xxx.fo which we want to keep a bit in target in case of debug need
                  -->
                  <foCustomization>${project.build.directory}/docbook-shared/top/pdf.xsl</foCustomization>
                  <!-- olink -->
                  <targetDatabaseDocument>file:///${dolUnzipped}/pdf/site.xml</targetDatabaseDocument>
                  <targetsFilename>${dolUnzipped}/pdf/${bookNameRoot}.db</targetsFilename>
                  <fop1Extensions>true</fop1Extensions>
                  <fontSelectionStrategy>character-by-character</fontSelectionStrategy>
                  <paperType>${pdfPaperType}</paperType>
                </configuration>
              </execution>
            </executions>

            <dependencies>
              <dependency>
                <groupId>org.docbook</groupId>
                <artifactId>docbook-xml</artifactId>
                <version>4.4</version>
                <scope>runtime</scope>
              </dependency>
            </dependencies>
          </plugin>

          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              <!-- copy the images to the html/images dir -->
              <execution>
                <id>docbook-copy-images</id>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <phase>package</phase>
                <configuration>
                  <outputDirectory>${project.build.directory}/site/d/images</outputDirectory>
                  <resources>
                    <resource>
                      <directory>src/docbook/images</directory>
                    </resource>
                  </resources>
                </configuration>
              </execution>
              <!-- copy the CSS stylesheet to the HTML dir -->
              <execution>
                <id>docbook-copy-css</id>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <phase>package</phase>
                <configuration>
                  <outputDirectory>${project.build.directory}/site/d/css</outputDirectory>
                  <resources>
                    <resource>
                      <directory>${project.build.directory}/docbook-shared/css</directory>
                    </resource>
                  </resources>
                </configuration>
              </execution>
              <!-- move the pdf from the docbkx to the site/d/ -->
              <execution>
                <id>docbook-move-pdf</id>
                <goals>
                  <goal>copy-resources</goal>
                </goals>  <!-- no "move" goal, use copy -->
                <phase>package</phase>
                <configuration>
                  <outputDirectory>${project.build.directory}/site/d</outputDirectory>
                  <resources>
                    <resource>
                      <directory>${project.build.directory}/docbkx/pdf</directory>
                      <excludes>
                        <exclude>**.fo</exclude>
                      </excludes>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile> 


    <!-- ************************************ -->
    <!-- * Build Custom Binary Distribution * -->
    <!-- ************************************ -->
    <profile>
      <id>build distribution</id>
      <activation>
        <file>
          <exists>src/main/assembly/bin.xml</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <!-- 
            assembly configuration to create bin and src distributions from conventional places
          -->
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>uima-distr</id>
                <goals>
                  <goal>single</goal>
                </goals>
                <phase>integration-test</phase> <!-- after first copies from jar/docbk pkg -->
                <configuration>
                  <descriptors>
                    <descriptor>src/main/assembly/bin.xml</descriptor>
                    <!-- next is replaced with more standard source-release assembly -->
                    <!-- descriptor>src/main/assembly/src.xml</descriptor -->
                  </descriptors>
                  <finalName>${assemblyFinalName}</finalName>
                  <tarLongFileMode>gnu</tarLongFileMode>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <!-- https://issues.apache.org/jira/browse/UIMA-2008 -->
          <!-- no Maven deployment of this project's artifacts -->
          <!-- binary build artifact deployed from Apache mirror system after release -->
          <plugin>
            <artifactId>maven-deploy-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>

          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>generate checksums for binary artifacts</id>
                <goals>
                  <goal>run</goal>
                </goals>
                <phase>verify</phase>
                <configuration>
                  <target>
                    <checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
                      <fileset dir="${project.build.directory}">
                        <include name="*.zip" />
                        <include name="*.gz" />
                      </fileset>
                    </checksum>
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>


    <!-- ************************************ -->
    <!-- *   Build Eclipse Plugin           * -->
    <!-- ************************************ -->
    <profile>
      <id>build eclipse plugins</id>
      <activation>
        <file>
          <exists>marker-file-identifying-eclipse-plugin</exists>
        </file>
      </activation>
      <build>
        <!-- resources are "merged" -->
        <!-- needed to copy resources, icons, and the plugin.xml to the result -->
        <resources>
          <resource>
            <directory>.</directory>
            <includes>
              <include>plugin.xml</include>
              <!-- include subdir of icons too, [UIMA-1958] -->
              <include>icons/**/*.*</include>
            </includes>
          </resource>
          <!-- need the following, is not "merged" from the overall maven superPom -->
          <resource>
            <directory>src/main/resources</directory>
          </resource>
        </resources>

        <pluginManagement>          
          <!-- 
            run the felix plugin in manifest mode because that plugin doesn't resolve all properties
            e.g., parsedVersion.osgiVersion
          -->
          <plugins>
            <plugin>
              <groupId>org.apache.felix</groupId>
              <artifactId>maven-bundle-plugin</artifactId>
              <executions>
                <execution>
                  <id>uima-bundle</id>
                  <goals>
                    <goal>manifest</goal>
                  </goals>
                  <phase>process-classes</phase>
                  <configuration>
                    <!-- we put the generate manifest in the spot where Eclipse 
                         plugins think it will be -->
                    <manifestLocation>META-INF/</manifestLocation>
                  </configuration>
                </execution>
                <!-- turn off unneeded executions -->
                <execution>
                  <id>default-deploy</id>
                  <phase />
                </execution>
                <execution>
                  <id>default-install</id>
                  <phase />
                </execution>
                <execution>
                  <id>default-bundle</id>
                  <phase />
                </execution>
              </executions>
            </plugin>
    
            <!-- pick up the manifest felix generates -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jar-plugin</artifactId>
              <configuration>
                <archive>
                  <manifestFile>META-INF/MANIFEST.MF</manifestFile>
                </archive>
              </configuration>
            </plugin>
    
            <!-- special eclipse:eclipse configuration for Eclipse plugins -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-eclipse-plugin</artifactId>
              <!--  version set in parent-pom-top -->
              <configuration>
                <manifest>.ignore</manifest>
                <pde>true</pde>
                <!-- set next to false because refs to runtime project
                     as a project don't work (because it is a library project,
                     and has no sources of its own 
                  
                  A consequence of this: If you change code a plugin depends on,
                  run "mvn install" on the changed code to get your plugin to
                  pick up the changes 
                  -->
                <useProjectReferences>false</useProjectReferences>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>

        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>              
              <!-- https://issues.apache.org/jira/browse/UIMA-2967 -->
              <execution>
                <id>clear-META-INF</id>
                <goals>
                  <goal>run</goal>
                </goals>
                <phase>compile</phase>  <!-- before maven-bundle-plugin plugin -->
                <configuration>
                  <target>
                    <delete file="META-INF/MANIFEST.MF" quiet="true" />
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>


    <!-- ************************************ -->
    <!-- *   Build Eclipse Feature          * -->
    <!-- ************************************ -->
    <profile>
      <id>build eclipse features</id>
      <activation>
        <file>
          <exists>marker-file-identifying-eclipse-feature</exists>
        </file>
      </activation>
      <build>
        <!-- turn on filtering for these resources -->
        <resources>
          <resource>
            <directory>${basedir}</directory>
            <includes>
              <include>feature.properties</include>
              <include>feature.xml</include>
              <include>uima-eclipse-user-agreement.html</include>
            </includes>
            <filtering>true</filtering>
          </resource>
        </resources>

        <!-- 
          The feature.xml is filtered here, rather than in going from the  top level place to the
          Jar, because Eclipse feature manipulation uses the top level value.         
         -->
        <plugins>
          <!-- 
            filter the feature.xml to have the right version info for Eclipse at the top level
          -->
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              <execution>
                <id>filter feature.xml</id>
                <!-- run before process-resources, which uses this result -->
                <phase>generate-resources</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${basedir}</outputDirectory>
                  <resources>
                    <resource>
                      <directory>src/main/resources</directory>
                      <includes>
                        <include>feature.xml</include>
                      </includes>
                      <filtering>true</filtering>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>    

    <!-- ************************************ -->
    <!-- *   Build Eclipse Update Subsite   * -->
    <!-- ************************************ -->
    <profile>
      <id>build-eclipse-update-subsite</id>
      <activation>
        <file>
          <exists>marker-file-identifying-eclipse-update-site</exists>
        </file>
      </activation>
      <properties>
        <eusWork>${project.build.directory}/eus-work</eusWork>
        <distsvnroot>https://dist.apache.org/</distsvnroot>
      </properties>
      <build>
        <plugins>

          <!-- ============================================================================ --> 
          <!--           U s e   o f   d i s t . a p a c h e . o r g    S V N               -->
          <!--                                                                              --> 
          <!--  Goals: avoid copying to /release/, use svn commit to do                     --> 
          <!--           just the changed files                                             -->
          <!--                                                                              -->
          <!--      Safety (abandonded)                                                     --> 
          <!--         for safety, work in the /dev/ area                                   --> 
          <!--         For vote, user can do commit to /dev/ area                           --> 
          <!--         After vote, user does svn switch to /release/ area and commits       --> 
          <!--         Above aproach abandoned, just be careful not to commit before vote   -->
          <!--                                                                              --> 
          <!--  svn (release) -> checkout                                                   --> 
          <!--  srcs -> eus-work - - - - +-> subsite -> (manual) commit       --> 
          <!--                                    SC         SC                             --> 
          <!--                                                                              --> 
          <!--    SC = sign & checksum                                                      --> 
          <!--         the 2nd SC is for the updated artifacts and contents of the subsite  --> 
          <!-- ============================================================================ --> 
           
          <!-- ============================================================================ --> 
          <!--                   O v e r a l l    F l o w                                   -->
          <!--                                                                              --> 
          <!--  PROCESS-SOURCES                                                             --> 
          <!--     New features to be included -> target/eus-work                           --> 
          <!--         (eus = Eclipse Update Site)                                          --> 
          <!--                                                                              --> 
          <!--     filter category.xml to pick up version #                                 --> 
          <!--                                                                              --> 
          <!--  PACKAGE                                                                     --> 
          <!--     Release SVN checkout -> target/eclipse-update-site/[component]           --> 
          <!--           (This is the current site - to be updated)                         --> 
          <!--                                                                              --> 
          <!--     Publish metadata goes from target/eus-work -> eclipse-update-site/[comp] -->
          <!--         (publish run in "append" mode)                                       --> 
          <!--                                                                              --> 
          <!--     Category update goes from target/eus-work -> eclipse-update-site/[comp]  --> 
          <!--                                                                              -->
          <!--     (if apache-release:                                                      -->
          <!--        do checksums and sign in target/eus-work                              --> 
          <!--        delete prev checksums and signature for artifacts/content.jar         -->
          <!--        add new checksum/sign for these two jars                              -->
          <!--        copy all checksums/signatures from eus-work                           -->
          <!--     )                                                                        -->
          <!--                                                                              -->
          <!-- ============================================================================ --> 
    
          <!-- ============================================================================ -->
          <!--    Alternate flow if apache-release is not defined -                         -->
          <!--      skip getting previous update site from dist.apache.org                  -->
          <!-- ============================================================================ -->
              
          <!-- filter the category.xml to have the right version info 
               for Eclipse at the top level -->
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              <execution>
                <id>filter-category.xml</id>
                <!-- run before package, which uses this result -->
                <phase>process-sources</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${basedir}</outputDirectory>
                  <resources>
                    <resource>
                      <directory>src/main/resources</directory>
                      <includes>
                        <include>category.xml</include>
                      </includes>
                      <filtering>true</filtering>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>BuildUpdateSite-clearWorkAreas</id>
                <phase>initialize</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <delete dir="${eusWork}" />
                  </target>
                </configuration>
              </execution>

              <execution>
                <id>BuildUpdateSite-pack-svnget-buildMetadata-commit-to-dev</id>
                <phase>package</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
                    
                    <!-- =================================== -->
                    <!--   Check we can access build tools   -->
                    <!-- =================================== -->
                    <!-- if the property uima-maven-build-eclipse-home is set, use it, otherwise don't -->
                    <condition property="eclipse.home" value="${uima-maven-build-eclipse-home}">
                      <not>
                        <equals arg1="${uima-maven-build-eclipse-home}" arg2="$${uima-maven-build-eclipse-home}" />
                      </not>
                    </condition>

                    <property environment="envVar" />
                    <condition property="eclipse.home" value="${envVar.ECLIPSE_HOME}">
                      <isset property="envVar.ECLIPSE_HOME" />
                    </condition>

                    <fail unless="eclipse.home" message="********** Please set up and use an ant property eclipse.home set to an Eclipse installation at level 3.3 or later, e.g. c:/eclipses/3.3/eclipse" />

                    <!-- =================================== -->
                    <!-- SVN checkout from release           -->
                    <!--   and checkout to subsite           -->
                    <!-- =================================== -->

                    <if>
                      <equals arg1="${isApacheRelease}" arg2="true" />
                      <then>
                        <echo>checking out eclipse update subsite ${eclipseUpdateSiteComponent} from
                          dist ...release...</echo>
                        <delete dir="${eclipseUpdateSubSite}" quiet="true" />
                        <exec executable="svn" failonerror="true">
                          <arg value="checkout" />
                          <arg value="${distsvnroot}repos/dist/release/uima/eclipse-update-site/${eclipseUpdateSiteComponent}" />
                          <arg value="${eclipseUpdateSubSite}" />
                        </exec> 
                        
                        <!-- abandon safety for now
                        <echo>switching this checkout to ...dev... for safety</echo>
                        <exec executable="svn">
                          <arg value="switch" />
                          <arg value="- -force" />  remove space between 2 dashes if uncommented
                          <arg value="- -accept" />  remove space between 2 dashes if uncommented
                          <arg value="mine-full" />
                          <arg value="${distsvnroot}repos/dist/dev/uima/eclipse-update-site/${eclipseUpdateSiteComponent}" />
                          <arg value="${eclipseUpdateSubSite}" />
                        </exec> 
                         -->
                      </then>
                      <else>
                        <echo>skipping checkout of current svn dist release (because not
                          apache-release)</echo>
                        <!-- https://issues.apache.org/jira/browse/UIMA-3501 -->
                        <delete dir="${eclipseUpdateSubSite}" quiet="true" />
                      </else>
                    </if>

                    <echo>Save conditioned Jars prior to signing, in case of redo</echo>
                    <echo>-------------------------------------------------------</echo>
                    <copy todir="${project.build.directory}/saved/features" failonerror="true">
                      <fileset dir="${eusWork}/features" includes="*.jar" />
                    </copy>
                    <copy todir="${project.build.directory}/saved/plugins" failonerror="true">
                      <fileset dir="${eusWork}/plugins" includes="*.jar" />
                    </copy>

                    <echo>Generate the p2 metadata and publish new artifacts</echo>
                    <!-- Append is needed because category info is incremental with each additional release -->
                    <java jar="${eclipse-equinox-launcher}" fork="true" failonerror="true" maxmemory="256m">
                      <arg line="-application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher" />
                      <arg line="-metadataRepository file:///${eclipseUpdateSubSite}" />
                      <arg line="-artifactRepository file:///${eclipseUpdateSubSite}" />
                      <arg line="-source ${eusWork}" />
                      <arg line="-configs ANY.ANY.ANY" />
                      <arg line="-publishArtifacts" />
                      <arg line="-compress" />
                      <arg line="-append" />
                    </java>

                    <echo>Augment p2 metadata with category information</echo>
                    <java jar="${eclipse-equinox-launcher}" fork="true" failonerror="true" maxmemory="256m">
                      <arg line="-application org.eclipse.equinox.p2.publisher.CategoryPublisher" />
                      <arg line="-metadataRepository file:///${eclipseUpdateSubSite}" />
                      <arg line="-categoryDefinition file:///${basedir}/category.xml" />
                      <arg line="-categoryQualifier apache-uima" />
                      <arg line="-compress" />
                    </java>  
          

                    <!-- ========================================== -->
                    <!--   If apache-release, do checksums and sign -->
                    <!-- ========================================== -->
                    <if>
                      <equals arg1="${isApacheRelease}" arg2="true" />
                      <then>

                        <echo message="Generating checksums for new features and plugins" />
                        <checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
                          <fileset dir="${eusWork}">
                            <include name="**/*.gz" />
                            <include name="**/*.jar" />
                          </fileset>
                        </checksum>

                        <echo message="Generating gpg signatures for new features and plugins" />
                        <apply executable="gpg" dir="${eusWork}" failonerror="true">
                          <arg value="--detach-sign" />
                          <arg value="--armor" />
                          <!-- batch flag needed to avoid gpg hang up -->
                          <arg value="--batch" />
                          <fileset dir="${eusWork}">
                            <include name="**/*.jar" />
                          </fileset>
                        </apply>

                        <echo message="Copying the checksums and signatures to the update subsite" />
                        <copy todir="${eclipseUpdateSubSite}" failonerror="true">
                          <fileset dir="${eusWork}">
                            <include name="**/*.asc" />
                            <include name="**/*.sha512" />
                          </fileset>
                        </copy>

                        <echo message="Clearing previous checksums and signatures for update artifacts.jar and content.jar" />
                        <delete dir="${eclipseUpdateSubSite}">
                          <include name="*.asc" />
                          <include name="**/*.sha512" />
                        </delete>

                        <echo message="Generating checksums for updated artifacts.jar and content.jar" />
                        <checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
                          <fileset dir="${eclipseUpdateSubSite}">
                            <include name="*.jar" />
                          </fileset>
                        </checksum>

                        <echo message="Generating gpg signatures for artifacts.jar and content.jar" />
                        <apply executable="gpg" dir="${eclipseUpdateSubSite}" failonerror="true">
                          <arg value="--detach-sign" />
                          <arg value="--armor" />
                          <!-- batch flag needed to avoid GPG hang up -->
                          <arg value="--batch" />
                          <fileset dir="${eclipseUpdateSubSite}">
                            <include name="*.jar" />
                          </fileset>
                        </apply>
                      </then>
                    </if>
                  </target>
                </configuration>
              </execution>

              <!-- ================================================= -->
              <!--                                                   -->
              <!--       P O S T   JAR   S I G N I N G by Digicert   -->
              <!--                                                   -->
              <!--   Rerun publish and sign after jar-signing   -->
              <!--   Has NO GOAL or PHASE, so doesn't run normally   -->
              <!--   run using mvn                                   -->   
              <!--      antrun:run@make-subsite-after-signing        -->
              <!-- ================================================= -->
              <execution>
                <id>make-subsite-after-signing</id>
                <configuration>
                  <target>
                    <taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
                    
                    <!-- =================================== -->
                    <!--   Check we can access build tools   -->
                    <!-- =================================== -->
                    <!-- if the property uima-maven-build-eclipse-home is set, use it, otherwise don't -->
                    <condition property="eclipse.home" value="${uima-maven-build-eclipse-home}">
                      <not>
                        <equals arg1="${uima-maven-build-eclipse-home}" arg2="$${uima-maven-build-eclipse-home}" />
                      </not>
                    </condition>

                    <property environment="envVar" />
                    <condition property="eclipse.home" value="${envVar.ECLIPSE_HOME}">
                      <isset property="envVar.ECLIPSE_HOME" />
                    </condition>

                    <echo>
                    </echo>
                    <echo>Resetting the content and artifacts for the site</echo>
                    <echo>------------------------------------------------</echo>
                    
                    <!-- This is needed because the previous pre-build step already
                         updated the content and artifacts jar with the new versions -->
                    <delete verbose="true">
                      <fileset dir="${eclipseUpdateSubSite}" includes="content.jar,artifacts.jar" />
                    </delete>
                    <copy todir="${eclipseUpdateSubSite}" failonerror="false">
                      <fileset dir="${project.build.directory}/saved" includes="content.jar,artifacts.jar" />
                    </copy>

                    <echo>
                    </echo>
                    <echo>Generate the p2 metadata and publish new artifacts</echo>
                    <echo>--------------------------------------------------</echo>
                    <!-- Append is needed because category info is incremental with each additional release -->
                    <java jar="${eclipse-equinox-launcher}" fork="true" failonerror="true" maxmemory="256m">
                      <arg line="-application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher" />
                      <arg line="-metadataRepository file:///${eclipseUpdateSubSite}" />
                      <arg line="-artifactRepository file:///${eclipseUpdateSubSite}" />
                      <arg line="-source ${eusWork}" />
                      <arg line="-configs ANY.ANY.ANY" />
                      <arg line="-publishArtifacts" />
                      <arg line="-compress" />
                      <arg line="-append" />
                    </java>

                    <echo>Augment p2 metadata with category information</echo>
                    <echo>---------------------------------------------</echo>
                    <java jar="${eclipse-equinox-launcher}" fork="true" failonerror="true" maxmemory="256m">
                      <arg line="-application org.eclipse.equinox.p2.publisher.CategoryPublisher" />
                      <arg line="-metadataRepository file:///${eclipseUpdateSubSite}" />
                      <arg line="-categoryDefinition file:///${basedir}/category.xml" />
                      <arg line="-categoryQualifier apache-uima" />
                      <arg line="-compress" />
                    </java>

                    <echo>
                    </echo>
                    <echo>Clearing previous checksums and signatures for eusWork plugins</echo>
                    <delete dir="${eusWork}">
                      <include name="**/*.asc" />
                      <include name="**/*.sha512" />
                    </delete>

                    <echo message="Generating checksums for signed plugins" />

                    <checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
                      <fileset dir="${eusWork}">
                        <include name="**/*.gz" />
                        <include name="**/*.jar" />
                      </fileset>
                    </checksum>

                    <echo message="Generating gpg signatures for new features and plugins" />
                    <apply executable="gpg" dir="${eusWork}" failonerror="true">
                      <arg value="--detach-sign" />
                      <arg value="--armor" />
                      <!-- batch flag needed to avoid gpg hang up -->
                      <arg value="--batch" />
                      <fileset dir="${eusWork}">
                        <include name="**/*.jar" />
                      </fileset>
                    </apply>

                    <echo message="Copying the checksums and signatures to the update subsite" />
                    <copy todir="${eclipseUpdateSubSite}" failonerror="true">
                      <fileset dir="${eusWork}">
                        <include name="**/*.asc" />
                        <include name="**/*.sha512" />
                      </fileset>
                    </copy>

                    <echo>
                    </echo>
                    <echo message="Clearing previous checksums and signatures for update artifacts.jar and content.jar" />
                    <delete dir="${eclipseUpdateSubSite}">
                      <include name="*.asc" />
                      <include name="*.sha512" />
                    </delete>

                    <echo message="Generating checksums for updated artifacts.jar and content.jar" />
                    <checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
                      <fileset dir="${eclipseUpdateSubSite}">
                        <include name="*.jar" />
                      </fileset>
                    </checksum>

                    <echo message="Generating gpg signatures for artifacts.jar and content.jar" />
                    <apply executable="gpg" dir="${eclipseUpdateSubSite}" failonerror="true">
                      <arg value="--detach-sign" />
                      <arg value="--armor" />
                      <!-- batch flag needed to avoid gpg hang up -->
                      <arg value="--batch" />
                      <fileset dir="${eclipseUpdateSubSite}">
                        <include name="*.jar" />
                      </fileset>
                    </apply>
                  </target>
                </configuration>
              </execution>

            </executions>
          </plugin>
        </plugins>

      </build>
    </profile>

    <!-- **************************************** -->
    <!-- * Build Simple Project Binary Assembly * -->
    <!-- **************************************** -->
    <!-- 
     This profile holds common, factored-out settings for all 
     projects that are packaged as single projects
     (that is, not as multi-module projects), typically Sandbox projects.
     
     It builds, in addition to the standard artifacts and attachments,
     a binary artifact, which includes:
       - The main generated artifact, in the lib/ dir
       - dependent artifacts needed at runtime (not otherwise provided), in the lib/ dir
       - Lic/Not/Readme/releaseNotes from root dir 
       - generated documentation in the docs/ dir
     
     At release time the standard Apache parent builds the 
       - "source-release" artifact, and the
       - "javadocs" artifact
     
     Conventions:
     
       License/Notice for Jar: uses the standard license/notice
       License/Notice for bin: uses the custom files from project top level
       dependencies on other artifacts: 
         Specified as scope runtime or compile causes these to be included in the lib dir
       
    -->
    <profile>
      <id>build simple project binary assembly</id>
      <activation>
        <file>
          <exists>marker-file-identifying-single-project</exists>
        </file>
      </activation>
      <build>
        <plugins>

          <!-- ********************************************* -->
          <!-- * Common Build                                -->
          <!-- *   *** FOR addons only ***                   -->
          <!-- ********************************************* -->
          <!-- *   Base Jar is built,                        --> 
          <!-- *     has no dependencies included            -->
          <!-- *     has basic LICENSE/NOTICE files          -->
          <!-- *   Base augmented dir built                  -->
          <!-- *     has Base Jar in lib/                    -->
          <!-- *     has dependencies in lib/                -->
          <!-- *     has other things that go into PEAR      -->
          <!-- *       except the pear install.xml           -->
          <!-- *     has augmented LICENSE/NOTICE files      -->
          <!-- *                                             -->
          <!-- *     This base is reused to make packages:   -->
          <!-- *       PEAR - adds the install.xml           -->
          <!-- *            - actually, the PEAR builder     -->
          <!-- *              will redo the copies, itself   -->
          <!-- *       OSGi - adds the OSGi manifest         -->
          <!-- *            - removes the doc, javadocs      -->
          <!-- *       individual zip/tar                    -->
          <!-- *       addons aggregate binary zip/tar       -->
          <!-- ********************************************* -->

          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs</id>          
                <!-- turn on javadoc build for each module -->
                <phase>prepare-package</phase>  <!-- before package, in case package needs the result -->
              </execution>
            </executions>
          </plugin>
              
          <!-- Build  base -->
            <!-- populate the lib dir with all needed dependencies
                 that will be distributed with this component
                 
                 NOTE: TRANSITIVE DEPENDENIES ARE NOT INCLUDED
                       ANYTHING YOU WANT INCLUDED IN THE JAR 
                       PLEASE LIST EXPLICITLY AND MODIFY THE LICENSE/NOTICE
                       APPROPRIATELY
                  
                 Runs during process-resources -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <!-- Copy the dependencies to the target/base-bin/lib folder -->
              <execution>
                <id>copy dependencies to base-bin/lib</id>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
                <phase>process-resources</phase>
                <configuration>
                  <outputDirectory>${project.build.directory}/base-bin/lib</outputDirectory>
                  <includeScope>runtime</includeScope>
                  <excludeTransitive>true</excludeTransitive>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              
              <!-- add directories if they exist -->
              <execution>
                <id>copy standard dirs and files to base-bin</id>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <phase>process-resources</phase>  <!-- required -->
                <configuration>
                  <outputDirectory>${project.build.directory}/base-bin</outputDirectory>
                  <resources>
                    <resource>
                      <directory>.</directory>
                      <includes>
                        <include>desc/**</include>
                        <include>conf/**</include>
                        <include>data/**</include>
                        <include>doc/**</include>
                        <include>docs/**</include>
                        <include>resources/**</include>
                        <include>bin/**</include>
                        <include>LICENSE*</include>
                        <include>NOTICE*</include>
                        <include>README*</include>
                        <include>readme*</include>
                        <include>RELEASE_NOTES*</include>
                        <include>ReleaseNotes*</include>
                        <include>issuesFixed/**</include>
                      </includes>
                    </resource>
                    <resource>
                      <directory>src/main/readme</directory>
                    </resource>
                  </resources>
                </configuration>
              </execution>
              
              <!-- copy generated Jar to base-bin/lib spot -->
              <execution>
                <id>copy standard target jar to base-bin/lib</id>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <phase>pre-integration-test</phase>  <!-- a phase after jar -->
                <configuration>
                  <outputDirectory>${project.build.directory}/base-bin/lib</outputDirectory>
                  <resources>
                    <resource>
                      <directory>${project.build.directory}</directory>
                      <includes>
                        <include>*.jar</include>
                      </includes>
                      <excludes>
                        <exclude>*-sources.jar</exclude>
                        <exclude>*-osgi.jar</exclude>
                      </excludes>
                    </resource>
                  </resources>
                </configuration>
              </execution>
              
              <!-- copy generated docbook artifacts -->
              <execution>
                <id>copy generated docbook artifacts to base-bin/doc folder</id>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <phase>pre-integration-test</phase>  <!-- a phase after docbkx (package) phase -->
                <configuration>
                  <outputDirectory>${project.build.directory}/base-bin/doc</outputDirectory>
                  <resources>
                    <resource>
                      <directory>${project.build.directory}/site/d</directory>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>binary-release</id> <!-- is "classifier" - match maven convention -->
                <goals>
                  <goal>single</goal>
                </goals>
                <phase>integration-test</phase>  <!-- after first copies from jar/docbk pkg -->
                <configuration>
                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                  <descriptorRefs>
                    <descriptorRef>
                      uima-single-project-bin2
                    </descriptorRef>
                  </descriptorRefs>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>org.apache.uima</groupId>
                <artifactId>uima-build-resources</artifactId>
                <version>${uimaBuildResourcesVersion}</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- ********************************** -->
    <!-- *   Build OSGi bundle            * -->
    <!-- ********************************** -->
    <profile>
      <id>osgi-bundle</id>
      <activation>
        <file>
          <exists>marker-file-identifying-osgi-bundle</exists>
        </file>
      </activation>
      <build>
         <plugins>
          <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>5.1.6</version>
            <extensions>true</extensions>
            <configuration>
              <instructions>
                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                <_dsannotations>*</_dsannotations>
                <_metatypeannotations>*</_metatypeannotations>
              </instructions>
            </configuration>
            <executions>
              <execution>
                <id>bundle-manifest</id>
                <phase>process-classes</phase>
                <goals>
                  <goal>manifest</goal>
                </goals>
                <configuration>
                  <niceManifest>true</niceManifest>
                  <exportScr>true</exportScr>
                  <scrLocation>${project.basedir}/OSGI-INF/..</scrLocation>
                  <manifestLocation>${project.basedir}/META-INF</manifestLocation>
                  <!-- 
                    - Enabling this currently seems to cause spurious exceptions in Eclipse 
                   <supportIncrementalBuild>true</supportIncrementalBuild>
                    -->
                </configuration>
              </execution>
            </executions>
          </plugin>
    
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-clean-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
              <execution>
                <phase>clean</phase>
                <goals>
                  <goal>clean</goal>
                </goals>
                <id>clean-manifest-and-osgiinf</id>
                <configuration>
                  <filesets>
                    <fileset>
                      <directory>${project.basedir}/META-INF</directory>
                      <includes>
                        <include>**</include>
                      </includes>
                    </fileset>
                    <fileset>
                      <directory>${project.basedir}/OSGI-INF</directory>
                      <includes>
                        <include>**</include>
                      </includes>
                    </fileset>
                  </filesets>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- ********************************** -->
    <!-- *   Build OSGi bundle (old)      * -->
    <!-- ********************************** -->
    <profile>
      <id>build OSGi bundle for annotator</id>
      <activation>
        <file>
          <exists>marker-file-identifying-osgi-project</exists>
        </file>
      </activation>

      <build>
        <plugins>
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              <!-- copy the base-bin dir to the osgi dir -->
              <execution>
                <id>Copy base-bin to osgi</id>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <phase>integration-test</phase>
                <configuration>
                  <outputDirectory>${project.build.directory}/osgi</outputDirectory>
                  <resources>
                    <resource>
                      <directory>${project.build.directory}/base-bin</directory>
                      <includes>
                        <include>**</include>
                      </includes>
                      <excludes>
                        <exclude>doc/**</exclude>
                        <exclude>docs/**</exclude>
                        <exclude>**/*-javadoc.jar</exclude>
                        <exclude>issuesFixed/**</exclude>
                      </excludes>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
          
          <!-- copy any uima dependencies needed to osgi/lib
               beyond what is done for the common build.
               NOTE: can't just add dependencies, because
                 a) local projects override scope to "provided" and
                 b) this would result in the jars being copied for
                    the common build -->

          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>Copy uima dependencies to osgi/lib</id>
                <goals>
                  <goal>copy</goal>
                </goals>
                <phase>process-resources</phase>
                <configuration>
                  <outputDirectory>${project.build.directory}/osgi/lib</outputDirectory>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.apache.uima</groupId>
                      <artifactId>uimaj-core</artifactId>
                      <version>${uimaDependencyVersion}</version>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <executions>
              <execution>
                <id>uima-bundle</id>
                <phase>integration-test</phase>
                <goals>
                  <goal>manifest</goal>
                </goals>
                <configuration>
                  <buildDirectory>${project.build.directory}/osgi</buildDirectory>
                  <manifestLocation>${project.build.directory}/osgi/META-INF</manifestLocation>
                  <instructions>
                    <Import-Package>org.apache.log.*;resolution:=optional</Import-Package>
                    <Embed-Dependency>*;scope=compile;</Embed-Dependency>
                    <Embed-Directory>lib</Embed-Directory>
                    <Bundle-RequiredExecutionEnvironment>J2SE-1.6</Bundle-RequiredExecutionEnvironment>
                    <Eclipse-ExtensibleAPI>true</Eclipse-ExtensibleAPI>
                    <Bundle-ClassPath>.,lib/${project.build.finalName}.jar,{maven-dependencies},lib/uimaj-core-${uimaDependencyVersion}.jar</Bundle-ClassPath>
                    <Include-Resource>
                      {maven-resources}, {maven-dependencies},
                      lib/uimaj-core-${uimaDependencyVersion}.jar=${settings.localRepository}/org/apache/uima/uimaj-core/${uimaDependencyVersion}/uimaj-core-${uimaDependencyVersion}.jar
                    </Include-Resource>
                    <Bundle-Version>${parsedVersion.osgiVersion}</Bundle-Version>
                    <Bundle-SymbolicName>${project.groupId}.${project.artifactId};singleton:=true</Bundle-SymbolicName>
                  </instructions>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <!-- Run JAR to create OSGi Jar -->
          <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
              <execution>
                <id>Create OSGi Jar</id>
                <goals>
                  <goal>jar</goal>
                </goals>
                <phase>integration-test</phase> <!-- after above build step -->
                <configuration>
                  <finalName>${project.groupId}.${project.artifactId}_${parsedVersion.osgiVersion}</finalName>
                  <classifier>osgi</classifier>
                  <classesDirectory>${project.build.directory}/osgi</classesDirectory>
                  <archive>
                    <manifestFile>${project.build.directory}/osgi/META-INF/MANIFEST.MF</manifestFile>
                  </archive>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
 

    <!-- ********************************** -->
    <!-- *   Build Standard PEAR          * -->
    <!-- ********************************** -->
    <profile>
      <id>build standard PEAR</id>
      <activation>
        <file>
          <exists>marker-file-identifying-standard-pear</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              <!-- add the contents of desc if it exists to the jar.  
                   This puts the things like the WhitespaceTokenizer.xml file into the Jar
                   and makes it easier for users to run this, without installing a pear. 
                   The Tagger project uses this technique, for instance -->
              <execution>
                <id>copy desc so its contents can be found in Jar</id>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <phase>process-resources</phase>  <!-- required -->
                <configuration>
                  <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                  <resources>
                    <resource>
                      <directory>desc</directory>
                      <includes>
                        <include>**</include>
                      </includes>
                    </resource>
                  </resources>
                </configuration>
              </execution>

              <!-- copy the base-bin dir to the pearPackaging dir -->
              <execution>
                <id>Copy base-bin to pearPackaging</id>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <phase>integration-test</phase> <!-- after first copies from jar/docbk pkg -->
                <configuration>
                  <outputDirectory>${project.build.directory}/pearPackaging</outputDirectory>
                  <resources>
                    <resource>
                      <directory>${project.build.directory}/base-bin</directory>
                      <includes>
                        <include>**</include>
                      </includes>
                      <excludes>
                        <exclude>**/*-javadoc.jar</exclude>
                      </excludes>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs</id>          
                <!-- turn on javadoc build for each module -->
                <phase>package</phase>
              </execution>
            </executions>
          </plugin>
          
          <!-- build the PEAR -->
          <plugin>
            <groupId>org.apache.uima</groupId>
            <artifactId>PearPackagingMavenPlugin</artifactId>
            <version>2.10.5</version>
            <extensions>true</extensions>
            <executions>
              <execution>
                <id>build uima annnotator Pear</id>
                <goals>
                  <goal>package</goal>
                </goals>
                   <!-- needs to run after the jar is built
                        after docbooks are packaged and copied to pearPackaging/doc folder -->
                <phase>integration-test</phase>  <!-- after first copies from jar/docbk pkg -->
                <configuration>
                  <datapath>$main_root/resources</datapath>
                  <componentId>${project.artifactId}</componentId>
                  <mainComponentDesc>${pearMainDescriptor}</mainComponentDesc>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <!-- Attach PEAR artifact after PEAR is built -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-pear-artifact</id>
                <phase>post-integration-test</phase>
                <goals>
                  <goal>attach-artifact</goal>
                </goals>
                <configuration>
                  <artifacts>
                    <artifact>
                      <file>${project.build.directory}/${project.artifactId}.pear</file>
                      <type>pear</type>
                    </artifact>
                  </artifacts>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    

    <!-- *********************************** -->
    <!-- * Eclipse: m2e lifecycle bindings * -->
    <!-- *********************************** -->
    <profile>
      <id>m2e</id>
      <activation>
        <property>
          <name>m2e.version</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <!--This plugin's configuration is used to store Eclipse m2e settings 
                only. It has no influence on the Maven build itself. -->
            <plugin>
              <groupId>org.eclipse.m2e</groupId>
              <artifactId>lifecycle-mapping</artifactId>
              <version>1.0.0</version>
              <configuration>
                <lifecycleMappingMetadata>
                  <pluginExecutions>
                  
                    <!-- ***************************** -->
                    <!-- IGNORE remote resources       -->
                    <!-- ***************************** -->
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-remote-resources-plugin</artifactId>
                        <versionRange>[1,)</versionRange>
                        <goals>
                          <goal>process</goal>
                          <goal>bundle</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                    
                    <!-- ***************************** -->
                    <!-- EXECUTE parse-date-time       -->
                    <!-- ***************************** -->
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.apache.uima</groupId>
                        <artifactId>uima-build-helper-maven-plugin</artifactId>
                        <versionRange>[2,)</versionRange>
                        <goals>
                          <goal>parse-date-time</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <execute />
                      </action>
                    </pluginExecution>
                    
                    <!-- ******************************* -->
                    <!-- IGNORE dependency copy / unpack -->
                    <!-- ******************************* -->
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <versionRange>[2,)</versionRange>
                        <goals>
                          <goal>unpack</goal>
                          <goal>copy-dependencies</goal>
                          <goal>unpack-dependencies</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                    
                    <!-- *********************************************** -->
                    <!-- IGNORE enforcer - to avoid warning message      -->
                    <!-- https://issues.apache.org/jira/browse/UIMA-3053 -->
                    <!-- *********************************************** -->
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-enforcer-plugin</artifactId>
                        <versionRange>[1,)</versionRange>
                        <goals>
                          <goal>enforce</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>                    
    
                    <!-- ******************************* -->
                    <!-- IGNORE clearing old Manifest.MF -->
                    <!-- at top level, needed by         -->    
                    <!-- maven bundle plugin             -->
                    <!-- ******************************* -->
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <versionRange>[1.6,)</versionRange>
                        <goals>
                          <goal>run</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>

                    <!-- *********************************************** -->
                    <!-- EXECUTE most javacc goals                       -->
                    <!-- *********************************************** -->
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>javacc-maven-plugin</artifactId>
                        <versionRange>[2,)</versionRange>
                        <goals>
                          <goal>javacc</goal>
                          <goal>jjtree-javacc</goal>
                          <goal>jjtree</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <execute />
                      </action>
                    </pluginExecution>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>javacc-maven-plugin</artifactId>
                        <versionRange>[2,)</versionRange>
                        <goals>
                          <goal>jjdoc</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                    
                    <!-- *********************************************** -->
                    <!-- The Maven Dev Connector for Eclipse m2e is no   -->
                    <!-- longer maintained. We copy the relevant part    --> 
                    <!-- of the lifecycle mapping for the                -->
                    <!-- maven-plugin-plugin here.                       -->
                    <!--                                                 -->
                    <!-- See https://github.com/ifedorenko/com.ifedorenko.m2e.mavendev/blob/master/com.ifedorenko.m2e.mavendev/lifecycle-mapping-metadata.xml -->
                    <!-- *********************************************** -->
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-plugin-plugin</artifactId>
                        <versionRange>[3.5.2,)</versionRange>
                        <goals>
                          <goal>descriptor</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <execute>
                          <runOnIncremental>false</runOnIncremental>
                        </execute>
                      </action>
                    </pluginExecution>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-plugin-plugin</artifactId>
                        <versionRange>[3.5.2,)</versionRange>
                        <goals>
                          <goal>helpmojo</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                  </pluginExecutions>
                </lifecycleMappingMetadata>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>


    <!-- ********************************** -->
    <!-- * Code quality: spotbugs         * -->
    <!-- ********************************** -->
    <profile>
      <id>spotbugs</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.spotbugs</groupId>
            <artifactId>spotbugs-maven-plugin</artifactId>
            <version>4.6.0.0</version>
            <executions>
              <execution>
                <id>default</id>
                <phase>verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
                <configuration>
                  <failOnError>false</failOnError>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>


    <!-- ********************************** -->
    <!-- * Code quality: JaCoCo           * -->
    <!-- ********************************** -->
    <profile>
      <id>jacoco</id>
      <properties>
        <jacoco.argLine />
        <maven.surefire.argLine />
        <maven.surefire.java9 />
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <argLine>@{jacoco.argLine} -Xmx@{maven.surefire.heap} -Xms@{maven.surefire.heap} @{maven.surefire.argLine} @{maven.surefire.java9}</argLine>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.8</version>
            <executions>
              <execution>
                <id>default-prepare-agent</id>
                <goals>
                  <goal>prepare-agent</goal>
                </goals>
                <configuration>
                  <propertyName>jacoco.argLine</propertyName>
                </configuration>
              </execution>
              <execution>
                <id>default-report</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>report</goal>
                </goals>
              </execution>
              <execution>
                <id>default-check</id>
                <goals>
                  <goal>check</goal>
                </goals>
                <configuration>
                  <rules />
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>


    <!-- ********************************** -->
    <!-- * Code quality: PMD              * -->
    <!-- ********************************** -->
    <profile>
      <id>pmd</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>3.16.0</version>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>cpd</goal>
                  <goal>pmd</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
              <targetJdk>${maven.compiler.target}</targetJdk>
              <linkXRef>false</linkXRef>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    

    <!-- ********************************** -->
    <!-- * Backwards compatibility report * -->
    <!-- ********************************** -->
    <profile>
      <id>enforce-compatibility</id>
      <activation>
        <file>
          <exists>marker-file-identifying-api-compatibility-check</exists>
        </file>
      </activation>

      <properties>
        <japicmp.postAnalysisScript>${project.build.directory}/japicmp-resources/japicmp/api-report.groovy</japicmp.postAnalysisScript>
      </properties>

      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.rat</groupId>
              <artifactId>apache-rat-plugin</artifactId>
              <executions>
                <execution>
                  <id>default-cli</id>
                  <configuration>
                    <excludes combine.children="append">
                      <exclude>**/api-change-report/**/*.*</exclude>
                    </excludes>
                  </configuration>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </pluginManagement>

        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>provide-japicmp-postAnalysisScript</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.apache.uima</groupId>
                      <artifactId>uima-build-resources</artifactId>
                      <version>${uimaBuildResourcesVersion}</version>
                      <type>jar</type>
                      <overWrite>true</overWrite>
                      <outputDirectory>${project.build.directory}/japicmp-resources/</outputDirectory>
                      <includes>japicmp/api-report.groovy</includes>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>
        
          <!-- https://siom79.github.io/japicmp/MavenPlugin.html -->
          <plugin>
            <groupId>com.github.siom79.japicmp</groupId>
            <artifactId>japicmp-maven-plugin</artifactId>
            <version>0.15.7</version>
            <configuration>
              <oldVersion>
                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>${project.artifactId}</artifactId>
                  <version>${api_check_oldVersion}</version>
                </dependency>
              </oldVersion>
              <parameter>
                <onlyModified>true</onlyModified>
                <!-- filter out classes with impl in their package or class name -->
                <postAnalysisScript>${japicmp.postAnalysisScript}</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>


    <!-- *********************************************** -->
    <!-- * Enable Tycho                                * -->
    <!-- *********************************************** -->
    <profile>
      <id>tycho</id>
      <activation>
        <property>
          <name>!disable-tycho</name>
        </property>
      </activation>
      
      <properties>
        <tycho-version>2.7.3</tycho-version>
      </properties>
    </profile>


    <!-- *********************************************** -->
    <!-- * Enable Tycho during release builds          * -->
    <!-- *********************************************** -->
    <profile>
      <id>tycho-release</id>
      <activation>
        <property>
          <name>!disable-tycho</name>
        </property>
        <file>
          <exists>marker-file-enabling-tycho-release</exists>
        </file>
      </activation>
      
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <configuration>
              <!-- 
                - Tycho-managed Eclipse files during release 
                -
                - We do not need the 'org.apache.maven.plugins:maven-scm-plugin:1.9.5:checkin' goal 
                - here because the release plugin automatically commits twice during the 'prepare' phase
                -->
              <preparationGoals>
                org.eclipse.tycho:tycho-versions-plugin:${tycho-version}:update-eclipse-metadata
                org.apache.maven.plugins:maven-scm-plugin:1.9.5:add
              </preparationGoals>
              <completionGoals>
                org.eclipse.tycho:tycho-versions-plugin:${tycho-version}:update-eclipse-metadata
                org.apache.maven.plugins:maven-scm-plugin:1.9.5:add
              </completionGoals>
            </configuration>
          </plugin>
          
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-scm-plugin</artifactId>
            <executions>
              <execution>
                <!-- 
                  - Tycho-managed Eclipse files during release 
                  -->
                <id>default-cli</id>
                <goals>
                  <goal>add</goal>
                  <goal>checkin</goal>
                </goals>
                <configuration>
                  <includes>
                    *-eclipse-*/META-INF/MANIFEST.MF,
                    *-eclipse-*/feature.xml,
                    *-eclipse-*/*.product,
                    *-eclipse-*/category.xml
                  </includes>
                  <excludes>**/target/**</excludes>
                  <message>Changing the Eclipse files versions</message>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
        
    <!-- *********************************************** -->
    <!-- * Enable Tycho in a module                    * -->
    <!-- *********************************************** -->
    <profile>
      <id>tycho-module</id>
      <activation>
        <file>
          <exists>marker-file-identifying-tycho-module</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-maven-plugin</artifactId>
            <version>${tycho-version}</version>
            <extensions>true</extensions>
          </plugin>
          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>target-platform-configuration</artifactId>
            <version>${tycho-version}</version>
            <configuration>
              <pomDependencies>consider</pomDependencies>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    
    <!-- *********************************************** -->
    <!-- * Enable auto-staging of release artifacts    * -->
    <!-- *                                             * -->
    <!-- * Modules need to place their artifacts into  * -->
    <!-- * ${staging-local-root}                       * -->
    <!-- *********************************************** -->
    <profile>
      <id>apache-release-rc-auto-staging-config</id>
      <activation>
        <property>
          <name>!disable-rc-auto-staging</name>
        </property>
      </activation>
      
      <properties>
        <releaseCandidateNum />
        <staging-scm-root>scm:svn:https://dist.apache.org/repos/dist/dev/uima/</staging-scm-root>
        <staging-local-root>${project.build.directory}/staging</staging-local-root>
        <staging-folder>${project.artifactId}-${project.version}-RC-${staging-timestamp}-${candidate-id}</staging-folder>
      </properties>
    </profile>
    
    <profile>
      <id>apache-release-rc-auto-staging</id>
      <activation>
        <property>
          <name>!disable-rc-auto-staging</name>
        </property>
        <file>
          <exists>marker-file-enabling-auto-staging</exists>
        </file>
      </activation>
      
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>buildnumber-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>generate-candidate-id</id>
                <phase>initialize</phase>
                <goals>
                  <goal>create</goal>
                </goals>
                <configuration>
                  <buildNumberPropertyName>candidate-id</buildNumberPropertyName>
                  <timestampPropertyName>staging-timestamp</timestampPropertyName>
                  <shortRevisionLength>7</shortRevisionLength>
                  <timestampFormat>yyyyMMddHHmm</timestampFormat>
                  <timezone>Z</timezone>
                </configuration>
              </execution>
            </executions>
          </plugin>
        
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-scm-plugin</artifactId>
            <executions>
              <execution>
                <id>checkout-staging</id>
                <phase>initialize</phase>
                <goals>
                  <goal>checkout</goal>
                </goals>
                <configuration>
                  <connectionType>developerConnection</connectionType>
                  <developerConnectionUrl>${staging-scm-root}</developerConnectionUrl>
                  <checkoutDirectory>${staging-local-root}</checkoutDirectory>
                </configuration>
              </execution>
              <execution>
                <id>add-staging-files</id>
                <phase>deploy</phase>
                <goals>
                  <goal>add</goal>
                </goals>
                <configuration>
                  <connectionType>developerConnection</connectionType>
                  <developerConnectionUrl>${staging-scm-root}</developerConnectionUrl>
                  <basedir>${staging-local-root}</basedir>
                  <includes>${staging-folder}/**/*</includes>
                </configuration>
              </execution>
              <execution>
                <id>commit-staging-files</id>
                <phase>deploy</phase>
                <goals>
                  <goal>checkin</goal>
                </goals>
                <configuration>
                  <connectionType>developerConnection</connectionType>
                  <developerConnectionUrl>${staging-scm-root}</developerConnectionUrl>
                  <basedir>${staging-local-root}</basedir>
                  <message>Staging release artifacts for ${project.artifactId}-${project.version}-RC-${staging-timestamp}-${candidate-id}</message>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>