<?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>
    <artifactId>apache</artifactId>
    <groupId>org.apache</groupId>
    <version>23</version>
    <relativePath />
  </parent>

  <groupId>org.apache.uima</groupId>
  <artifactId>parent-pom</artifactId>
  <version>14-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>
      <otherArchives>
        <otherArchive>https://mail-archives.apache.org/mod_mbox/uima-dev</otherArchive>
      </otherArchives>
    </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>
      <otherArchives>
        <otherArchive>https://mail-archives.apache.org/mod_mbox/uima-user</otherArchive>
      </otherArchives>
    </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>
      <otherArchives>
        <otherArchive>https://mail-archives.apache.org/mod_mbox/uima-commits</otherArchive>
      </otherArchives>
    </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>
  </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-14</jiraVersion>  
    <!--  *********************************************************************************************************** -->
    <!--                                 U  G  H   change manually for release (to remove -SNAPSHOT                 * -->
    <!--  *********************************************************************************************************** -->
    <!--  *********************************************************************************************************** -->
    <!--  *********************************************************************************************************** -->
    <parentPomPatchVersion>13</parentPomPatchVersion>  <!-- UGH need to change this manually for release !!! -->
    <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.0.5</maven.version>
    <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-remote-resources-plugin</artifactId>
          <version>1.7.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.1.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.1.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.8</version>
        </plugin>

        <!-- assembly plugin 
             Disable running assembly:assembly with
             warning message to use install instead -->
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.2.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.0.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-plugin-plugin</artifactId>
          <version>3.6.0</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-compiler-plugin</artifactId>
          <version>3.8.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.1.1</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.0</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>1.8</version>
          <dependencies>
            <dependency> <!-- for ant extension supporting "if" -->
              <groupId>ant-contrib</groupId>
              <artifactId>ant-contrib</artifactId>
              <version>20020829</version>
              <scope>runtime</scope>
              <exclusions>
                <exclusion> <!-- is dragging in ant 1.5 -->
                  <groupId>ant</groupId>
                  <artifactId>ant</artifactId>
                </exclusion>
              </exclusions>
            </dependency>
            <!-- next two enable <containsregexp> form for filesets -->
            <dependency>
              <groupId>org.apache.ant</groupId>
              <artifactId>ant-apache-regexp</artifactId>
              <version>1.10.1</version>
            </dependency>
            <dependency>
              <groupId>jakarta-regexp</groupId>
              <artifactId>jakarta-regexp</artifactId>
              <version>1.4</version>
            </dependency>
          </dependencies>
        </plugin>

        <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <!-- version 2.0.0 fails -->
          <!-- version 2.3.4 eliminates spurious warning messages -->
          <!-- version 2.5 has accidental dependency on Java 6 -->
          <version>3.3.0</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>.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>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-M3</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>${maven.compiler.target}</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>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>
    </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>
            <plugin>
              <groupId>net.nicoulaj.maven.plugins</groupId>
              <artifactId>checksum-maven-plugin</artifactId>
            </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>
                    <!-- copy to target so checksum-maven-plugin can sha512 checkum it -->
                    <property name="pom-file-tgt"
                      location="${project.build.directory}/${project.build.finalName}.pom" />
                    <property name="pom-file-src"
                      location="${project.build.directory}/../pom.xml" />
                    <copy file="${pom-file-src}" tofile="${pom-file-tgt}" />
                    
                    <!-- patch gpg and checksum jars in local .m2 -->
                    <echo
                      message="patch maven-gpg-plugin and checksum-maven-plugin. if get copy failure message, rerun this build" />
                    <copy verbose="true" overwrite="true" failonerror="false"
                      file="${settings.localRepository}/org/apache/uima/parent-pom/${parentPomPatchVersion}/parent-pom-${parentPomPatchVersion}-gpg-plugin-patch.jar"
                      tofile="${settings.localRepository}/org/apache/maven/plugins/maven-gpg-plugin/1.6/maven-gpg-plugin-1.6.jar" />
                    <copy verbose="true" overwrite="true" failonerror="false"
                      file="${settings.localRepository}/org/apache/uima/parent-pom/${parentPomPatchVersion}/parent-pom-${parentPomPatchVersion}-checksum-plugin-patch.jar"
                      tofile="${settings.localRepository}/net/nicoulaj/maven/plugins/checksum-maven-plugin/1.8/checksum-maven-plugin-1.8.jar" />
                  </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}" />
                        <!-- <checksum format="MD5SUM" forceoverwrite="yes" algorithm="sha1" file="${source-release}" /> -->
                        <!-- <checksum format="MD5SUM" forceoverwrite="yes" algorithm="md5" 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>  https://issues.apache.org/jira/browse/UIMA-5897 -->
                    <exclude>**/*.asc</exclude>
                  </excludes>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>net.nicoulaj.maven.plugins</groupId>
            <artifactId>checksum-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>artifacts-checksum</id>
                <!-- run before gpg signing, so gpg can sign (ugh) the .sha512 needed for workaround -->
                <phase>post-integration-test</phase>
                <goals>
                  <goal>artifacts</goal>
                </goals>
                <configuration>
                  <attachChecksums>true</attachChecksums>
                  <appendFilename>true</appendFilename>
                  <algorithms>
                    <algorithm>SHA-512</algorithm>
                  </algorithms>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>


    <!-- *************************************************** -->
    <!-- * Run Rat report - for Jenkins                    * -->
    <!-- * https://issues.apache.org/jira/browse/UIMA-2590 * -->
    <!-- *************************************************** -->
    <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>


    <!-- *********************************************** -->
    <!-- *  Run actions only for uima-wide parent pom  * -->
    <!-- *    ** not inherited by sub projects **      * -->
    <!-- *   Produce Jira report                       * -->
    <!-- *   attach patches for gpg and chksum plugins * -->
    <!-- *********************************************** -->
    <profile>
      <id>mavenJirareport</id>
      <activation>
        <!-- NOTE: if you try to make this work more generally, by 
             using a marker file in all top-level release projects,
             this approach fails because for other top-level
             release projects, it substitutes the value of
             the jiraVersion property from the top level pom, not
             the pom being released.  So other release projects include
             this kind of profile within themselves, in a profile
             for "apache-release" triggered by name. -->
             
        <!-- It would be nice to have this only run when releasing, 
             but the activation clauses are currently only
             "ored" together, not "anded". -->

        <file>
          <exists>marker-file-identifying-parent-pom</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-remote-resources-plugin</artifactId>
          </plugin>

          <plugin>
            <artifactId>maven-changes-plugin</artifactId>
          </plugin>

          <!-- copy patch jars to project-build-dir with name change
                 otherwise the checksum plugin wont work on them -->
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>setup-patch-jars</id>
                <phase>process-resources</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <property name="checksum-tgt"
                      location="${project.build.directory}/${project.artifactId}-${project.version}-checksum-plugin-patch.jar" />
                    <property name="checksum-src"
                      location="${project.build.directory}/../src/resources/checksum-maven-plugin-1.8.jar" />
                    <copy file="${checksum-src}" tofile="${checksum-tgt}" verbose="true" />
                    <property name="gpg-tgt"
                      location="${project.build.directory}/${project.artifactId}-${project.version}-gpg-plugin-patch.jar" />
                    <property name="gpg-src"
                      location="${project.build.directory}/../src/resources/maven-gpg-plugin-1.6.jar" />
                    <copy file="${gpg-src}" tofile="${gpg-tgt}" verbose="true" />
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-gpg-checksum-patch-jars</id>
                <goals>
                  <goal>attach-artifact</goal>
                </goals>
                <phase>process-resources</phase>  <!-- before signing and checksum -->
                <configuration>
                  <artifacts>
                    <artifact>
                      <file>${project.build.directory}/${project.artifactId}-${project.version}-checksum-plugin-patch.jar</file>
                      <type>jar</type>
                      <classifier>checksum-plugin-patch</classifier>
                    </artifact>
                    <artifact>
                      <file>${project.build.directory}/${project.artifactId}-${project.version}-gpg-plugin-patch.jar</file>
                      <type>jar</type>
                      <classifier>gpg-plugin-patch</classifier>
                    </artifact>
                  </artifacts>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    
    <!-- **************************************** -->
    <!-- * Override - don't produce Jira report * -->
    <!-- **************************************** -->
    
    <!-- 
      NOTE: if you use this, you MUST check in the generated Jira report into SVN, otherwise
      it won't appear in the release assemblies. 
    -->
    <profile>
      <id>mavenJirareportSkip</id>
      <activation>
        <property>
          <name>maven.jiraReport.skip</name>
        </property>
      </activation>
      <build>
        <plugins>
          <!-- Skip jira report -->
          <plugin>
            <artifactId>maven-changes-plugin</artifactId>
            <executions>
              <execution>
                <id>default-cli</id>
                <phase />
              </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.14</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>
        <!-- The final name is typically overridden in the individual project
             to follow the Eclipse naming rules.  Rather than just the artifactId,
             Eclipse wants this name to be the same as the Bundle-SymbolicName,
             which typically starts with org.apache.uima, and isn't the same as
             the artifact name.
             examples:
                uimaj-ep-jcasgen    -     org.apache.uima.jcas.jcasgenp
                uimaj-ep-configurator -   org.apache.uima.desceditor     -->
        <finalName>${project.artifactId}_${parsedVersion.osgiVersion}</finalName>         
                
        <!-- 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>
        <finalName>${project.artifactId}_${parsedVersion.osgiVersion}</finalName>
        <!-- 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" />
                      <!-- include name="**/*.md5" /-->
                      <!-- <include name="**/*.sha1" /> -->
                    </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" />
                        <!-- include name="**/*.md5" /-->
                        <!-- <include name="**/*.sha1" /> -->
                      </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" />
                      <!-- <include name="*.md5" /> -->
                      <!-- <include name="*.sha1" /> -->
                    </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>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>3.1.12.2</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.5</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.12.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.14.4</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>


    <!-- ********************************** -->
    <!-- * Java 11 enablement             * -->
    <!-- ********************************** -->
    <profile>
      <id>java11</id>
      <activation>
        <jdk>11</jdk>
      </activation>
      <properties>
        <jaxb.version>2.3.1</jaxb.version>
        <jaxb.version01>2.3.0.1</jaxb.version01>
        <java.version>8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source> <!-- can't do 11 with target 8  -->
        <maven.compiler.target>${java.version}</maven.compiler.target> <!-- still want to run in Java 8 -->
      </properties>
      <dependencies>
        <!--
          - java.xml.bind and javax.annotation-api have been removed in Java 11 from the JDK, need to add it 
          as dependency
        -->
        <dependency>
          <groupId>javax.xml.bind</groupId>
          <artifactId>jaxb-api</artifactId>
          <version>${jaxb.version}</version>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>com.sun.xml.bind</groupId>
          <artifactId>jaxb-core</artifactId>
          <version>${jaxb.version01}</version>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>com.sun.xml.bind</groupId>
          <artifactId>jaxb-impl</artifactId>
          <version>${jaxb.version}</version>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>javax.annotation</groupId>
          <artifactId>javax.annotation-api</artifactId>
          <version>1.3.2</version>
        </dependency>
      </dependencies>

      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-surefire-plugin</artifactId>
              <configuration>
                <argLine>--illegal-access=permit</argLine>
              </configuration>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-failsafe-plugin</artifactId>
              <configuration>
                <argLine>--illegal-access=permit</argLine>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
  </profiles>
</project>