diff --git a/pom.xml b/pom.xml
index 48b56d8..5bc9016 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,2970 +1,2924 @@
-<?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>14</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>
+<?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</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>
+    <tag>parent-pom-14</tag>
+  </scm>
+
+  <issueManagement>
+    <system>Jira</system>
+    <!-- the form of the url is from https://maven.apache.org/plugins/maven-changes-plugin/usage.html -->
+    <!--url>https://issues.apache.org/jira/BrowseProject.jspa?projectId=12310570</url-->
+    <url>https://issues.apache.org/jira/browse/UIMA</url>
+  </issueManagement>
+
+  <ciManagement>
+    <system>Jenkins</system>
+    <url>https://ci-builds.apache.org/</url>
+    <notifiers />
+  </ciManagement>
+  
+  <!-- distribution management - is inherited from Apache POM
+       and specifies 
+         https://repository.apache.org/service/local/staging/deploy/maven2
+       and for snapshots:
+         https://repository.apache.org/content/repositories/snapshots -->
+  <!-- for children POMs maven automatically adds their artifactId to the URL below
+       unless overridden -->
+  <distributionManagement>
+    <site>
+      <id>uima.apache.org</id> <!-- following maven convention -->
+      <name>Apache UIMA Website</name>
+      <url>${uimaWebsiteDistributionUrl}</url>  <!-- on people.apache.org: /www/uima.apache.org -->
+    </site>
+  </distributionManagement>
+
+  <properties>
+    <!--  
+      This property is overridden in child projects that are released, to correspond to the 
+      Jira release category(ies) We specify something here, because if accidentally left blank, it 
+      generates a giant request for all changes
+    -->
+    <!-- for parent-pom-14. Change for each release -->
+    <jiraVersion>parent-pom-14</jiraVersion>  
+    <!--  *********************************************************************************************************** -->
+    <!--                                 U  G  H   change manually for release (to remove -SNAPSHOT                 * -->
+    <!--  *********************************************************************************************************** -->
+    <!--  *********************************************************************************************************** -->
+    <!--  *********************************************************************************************************** -->
+    <parentPomPatchVersion>14</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>
\ No newline at end of file
