<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <artifactId>apache</artifactId>
    <groupId>org.apache</groupId>
    <version>21</version>
    <relativePath />
  </parent>

  <groupId>org.apache.uima</groupId>
  <artifactId>parent-pom</artifactId>
  <version>12</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://mail-archives.apache.org/mod_mbox/uima-dev
      </archive>
      <otherArchives>
        <otherArchive>
          https://dir.gmane.org/gmane.comp.apache.uima.devel
        </otherArchive>
         <otherArchive>       
           http://uima.markmail.org
        </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://mail-archives.apache.org/mod_mbox/uima-user
      </archive>
      <otherArchives>
        <otherArchive>
          https://dir.gmane.org/gmane.comp.apache.uima.general
        </otherArchive>
         <otherArchive>       
           http://uima.markmail.org
        </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://mail-archives.apache.org/mod_mbox/uima-commits
      </archive>
    </mailingList>
  </mailingLists>
        
  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/uima/build/tags/parent-pom-12
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/uima/build/tags/parent-pom-12
    </developerConnection>
    <url>
      http://svn.apache.org/viewvc/uima/build/tags/parent-pom-12
    </url>
  </scm>
  
  <issueManagement>
    <system>Jira</system>
    <!-- the form of the url is from http://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://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 -->
    <jiraVersion>parent-pom-12</jiraVersion>  <!-- for parent-pom-10. Change for each release -->
    <!--  *********************************************************************************************************** -->
    <!--                                 U  G  H   change manually for release                                      * -->
    <!--  *********************************************************************************************************** -->
    <!--  *********************************************************************************************************** -->
    <!--  *********************************************************************************************************** -->
    <parentPomPatchVersion>12-SNAPSHOT</parentPomPatchVersion>  <!-- UGH need to change this manually for release !!! -->
    <uimaBuildResourcesVersion>5</uimaBuildResourcesVersion>
    <uimaWebsiteUrl>http://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>
 
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  
  <!-- can't put this dependency at the top level - 
       causes them to be included in children -->
  <!--dependencies>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uima-build-resources</artifactId>
      <version>1-SNAPSHOT</version>
    </dependency>
  </dependencies-->
  
  <repositories>
    <!-- note: inheritance does *NOT* merge subparts,
         so, redeclare them -->           
    <!-- define repositories for getting Eclipse parts
         because the one in "central" gives broken parts
    2017 - this repo not there anymore 
    <repository>
      <id>eclipsePlugins</id>
      <name>Eclipse components</name>
      <layout>default</layout>
      <url>http://repo1.maven.org/eclipse</url>
      
      <releases>
        <updatePolicy>never</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
      </releases>
      
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    -->

    <!-- modify central repository access:
         Turn on checksum checking-->
    <repository>
      <id>central</id>
      <name>Maven Repository Switchboard</name>
      <layout>default</layout>
      <url>https://repo1.maven.org/maven2</url>

      <releases>
        <enabled>true</enabled>
        <checksumPolicy>fail</checksumPolicy>
        <updatePolicy>never</updatePolicy>
      </releases>

      <snapshots>
        <enabled>false</enabled>
      </snapshots>

    </repository>

    <!-- inherited
    <repository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>https://repository.apache.org/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </repository>  --> 
      
  </repositories>
  
  <pluginRepositories>
    <pluginRepository>
      <id>apache.snapshots.plugins</id>
      <name>Apache Snapshot Repository - Maven plugins</name>
      <url>https://repository.apache.org/snapshots</url>
      <layout>default</layout>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <checksumPolicy>fail</checksumPolicy>
        <updatePolicy>never</updatePolicy>        
      </snapshots>
    </pluginRepository>
  </pluginRepositories>
  
  <build>
    <pluginManagement>
      <plugins>

        <!-- inherited from apache-wide parent pom -->
        <!-- 
          <artifactId>maven-deploy-plugin</artifactId>
          <artifactId>maven-source-plugin</artifactId>
          <artifactId>maven-resources-plugin</artifactId>
          <artifactId>maven-dependency-plugin</artifactId><version>3.0.2</version>  see https://issues.apache.org/jira/browse/UIMA-2963
          <artifactId>maven-javadoc-plugin</artifactId>  at 3.0.1 Oct 2018
          <artifactId>apache-rat-plugin</artifactId>
          <artifactId>maven-remote-resources-plugin</artifactId>
          
         -->  
         
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
           <version>2.22.1</version>
         </plugin>         
        
        <!-- assembly plugin 
             Disable running assembly:assembly with
             warning message to use install instead -->
        <plugin> 
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.1.0</version> <!-- https://issues.apache.org/jira/browse/UIMA-3332 from superpom-->
          <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.3 required for Java 8 builds -->
		    	<!-- http://jira.codehaus.org/browse/MPLUGIN-244 -->
		    	<!-- inherit from apache superpom (3.52 in 2018)  -->
	        <executions>
	          <execution>
	            <!-- force to use process-classes phase so runs after Java Annotations are available -->
	            <!-- http://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.0</version>
          <configuration>
            <source>${maven.compiler.source}</source>
            <target>${maven.compiler.target}</target>
            <!--encoding>UTF-8</encoding this inherited from apache pom 7 -->
          </configuration>
        </plugin>
        
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <configuration>
            <source>${maven.compiler.source}</source>
            <javadocVersion>${maven.compiler.source}</javadocVersion> <!-- https://issues.apache.org/jira/browse/UIMA-5369 -->
            <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>
          <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>http://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>

          <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>
      
        <!-- deprecated - move to m2eclipse, but keeping for now --> 
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>2.10</version>
          <configuration>
            <downloadSources>true</downloadSources>
          </configuration>
        </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>
          <executions>
            <execution>
              <id>default-cli</id>
              <goals><goal>check</goal></goals>
              <phase>verify</phase>
              <!-- default configuration -->
              <configuration>
                <excludes>
                  <exclude>release.properties</exclude> <!-- generated file -->
                  <exclude>README*</exclude>
                  <exclude>RELEASE_NOTES*</exclude>
                  <exclude>issuesFixed/**</exclude> <!-- generated file -->
                  <exclude>src/main/resources/docbook-shared/titlepage/*.xsl</exclude>
                  <exclude>marker-file-identifying-*</exclude> <!-- empty file -->
                  <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>
                </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.10 see https://issues.apache.org/jira/browse/UIMA-3764 -->
          <version>2.12.1</version>  <!-- Apache-wide pom has no entry for this plugin -->
          <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-M2</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>
              <version>1.8</version>
            </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>
                    <exclude>**/*.asc</exclude>
                  </excludes>
                </configuration>
              </execution>
            </executions>
          </plugin>
          
          <plugin>
            <groupId>net.nicoulaj.maven.plugins</groupId>
            <artifactId>checksum-maven-plugin</artifactId>
            <version>1.8</version>
            <executions>            
                             
              <execution>
                <id>artifacts-checksum</id>
                <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-assembly-plugin</artifactId>
            <dependencies>            
              <dependency>
                <groupId>org.apache.uima</groupId>
                <artifactId>uima-build-resources</artifactId>
                <version>${uimaBuildResourcesVersion}</version>
              </dependency>
            </dependencies>
          </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>
     
      <!--dependencies-->
        <!-- can't have a dependency in the parent pom - unless you want it
             inherited by all child poms -->
        <!-- dependency>
          <groupId>org.apache.uima</groupId>
          <artifactId>uima-build-resources</artifactId>
          <version>1-SNAPSHOT</version>
        </dependency -->
        
        <!-- having a dependency specified on 1-SNAPSHOT blocks release --> 
        <!--dependency>
          <groupId>org.apache.uima</groupId>
          <artifactId>${dolArtifactId}</artifactId>
          <type>zip</type>
          <classifier>${dolClassifier}</classifier>
          <version>1-SNAPSHOT</version>
        </dependency-->
      <!--/dependencies-->
      
      
      
      <build>
        <plugins>
          <!-- something to set some properties for dates used in copyright notices -->
          <!-- Works, but is slow due to loading groovy -->      
          <!--plugin>
             <groupId>org.codehaus.groovy.maven</groupId>
             <artifactId>gmaven-plugin</artifactId>
             <version>1.0</version>
             <executions>
                <execution>
                   <phase>prepare-package</phase>
                   <goals>
                      <goal>execute</goal>
                   </goals>
                   <configuration>
                      <source>
                      import java.util.Date 
                      import java.text.MessageFormat 
                      def varYear = MessageFormat.format("{0,date,yyyy}", new Date())
                      def varMonth = MessageFormat.format("{0,date,MMMMMMMMM}", new Date()) 
                      project.properties['buildYear'] = varYear
                      project.properties['buildMonth'] = varMonth
                      </source>
                   </configuration>
                </execution>
             </executions>
          </plugin-->
                    
          <!-- 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>
                  
                  <fonts>
                    <!-- embedded fonts -->
                    <!--
                    This information must exactly match the font specified
                    in the fo file. Otherwise it will use a default font.
            
                    For example,
                    <fo:inline font-family="Arial" font-weight="bold" font-style="normal">
                        Arial-normal-normal font
                    </fo:inline>
                    for the font triplet specified by:
                    <font-triplet name="Arial" style="normal" weight="bold" />
            
                    If you do not want to embed the font in the pdf document
                    then do not include the "embed-url" attribute.
                    The font will be needed where the document is viewed
                    for it to be displayed properly.
            
                    possible styles: normal | italic | oblique | backslant
                    possible weights: normal | bold | 100 | 200 | 300 | 400
                                      | 500 | 600 | 700 | 800 | 900
                    (normal = 400, bold = 700)
                    -->
            
                    <!--
                    <font metrics-url="arial.xml" kerning="yes" embed-url="arial.ttf">
                      <font-triplet name="Arial" style="normal" weight="normal" />
                      <font-triplet name="ArialMT" style="normal" weight="normal" />
                    </font>
                    <font metrics-url="arialb.xml" kerning="yes" embed-url="arialb.ttf">
                      <font-triplet name="Arial" style="normal" weight="bold" />
                      <font-triplet name="ArialMT" style="normal" weight="bold" />
                    </font>
                    -->
                    
                    <!-- per UIMA-1051 - change to use standard Times Roman default PDF font -->
                    <!--font>
                      <name>Palatino</name>
                      <style>normal</style>
                      <weight>normal</weight>
                      <kerning>yes</kerning>
                      <embedFile>c:/Windows/Fonts/pala.TTF</embedFile>
                      <metricsFile>${project.build.directory}/docbook-shared/fonts/palatino.xml</metricsFile>
                    </font>
                    <font>
                      <name>Palatino</name>
                      <style>normal</style>
                      <weight>bold</weight>
                      <kerning>yes</kerning>
                      <embedFile>c:/Windows/Fonts/palab.TTF</embedFile>
                      <metricsFile>${project.build.directory}/docbook-shared/fonts/palatino-bold.xml</metricsFile>
                    </font>
                    <font>
                      <name>Palatino</name>
                      <style>italic</style>
                      <weight>normal</weight>
                      <kerning>yes</kerning>
                      <embedFile>c:/Windows/Fonts/palai.TTF</embedFile>
                      <metricsFile>${project.build.directory}/docbook-shared/fonts/palatino-italic.xml</metricsFile>
                    </font>
                    <font>
                      <name>Palatino</name>
                      <style>italic</style>
                      <weight>bold</weight>
                      <kerning>yes</kerning>
                      <embedFile>c:/Windows/Fonts/palabi.TTF</embedFile>
                      <metricsFile>${project.build.directory}/docbook-shared/fonts/palatino-bold-italic.xml</metricsFile>
                    </font-->
                    
                  </fonts>
                  <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 plugin 
	             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>
                    <!-- 
                    <checksum algorithm="sha1" format="MD5SUM" forceoverwrite="yes">
                      <fileset dir="${project.build.directory}">
                        <include name="*.zip" />
                        <include name="*.gz" />
                      </fileset>
                    </checksum>
                    <checksum algorithm="md5" 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>
        <toBePacked>${project.build.directory}/toBePacked</toBePacked>
        <distsvnroot>https://dist.apache.org/</distsvnroot>
<!--         <distsvnroot>file:///svn/t/</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 -> toBePacked -> 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 plugins to be compressed -> target/toBePacked                        --> 
          <!--                                                                              --> 
          <!--     New features to be included -> target/eus-work                           --> 
          <!--         (eus = Eclipse Update Site)                                          --> 
          <!--                                                                              --> 
          <!--     filter category.xml to pick up version #                                 --> 
          <!--                                                                              --> 
          <!--  PACKAGE                                                                     --> 
          <!--     Pack step goes from target/toBePacked -> target/eus-work                 --> 
          <!--                                                                              --> 
          <!--     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="${toBePacked}" quiet="true" />
		                <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" />
		
		                <fail unless="uima-eclipse-jar-processor" message="********** Please add to your settings.xml file the property uima-eclipse-jar-processor, point to this within an Eclipse installation at level 4.2 or later, e.g. \$\{uima-maven-build-eclipse-home\}/plugins/org.eclipse.equinox.p2.jarprocessor_1.0.200.v20110808-1657.jar" />
		
		                <!-- =================================== -->
		                <!-- 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>Compress plugin Jars using pack200 - this may take a minute or 2</echo>
		                <java jar="${uima-eclipse-jar-processor}" fork="true" failonerror="true" maxmemory="256m">
		                  <arg line="-processAll" />
		                  <arg line="-repack" />
		                  <arg line="-pack" />
		                  <arg line="-verbose" />
		                       <!--  only pack the plugins.  The publisher won't copy packed "features", 
		                             they are tiny anyways --> 
		                  <arg line="-outputDir ${eusWork}/plugins" />
		                  <arg line="${toBePacked}" />
		                </java>
		                
				            <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>
		                		 		                
		                <!--FAILED EXPERIMENT: COMMENTED OUT
		                       manually publish - eusWork to subsite
		                       rename to follow Eclipse conventions 
		                <echo>Copy jar and jar.pack.gz artifacts to the target subsite</echo>
		                -->
                    <!-- mimic publish action of renaming artifacts from -SNAPSHOT to .SNAPSHOT -->
                    <!-- We do an ANT copy because the publishArtifacts won't copy if the target
                           has an indentically-named artifact (as is often the case during
                           testing, with the artifact ending in -SNAPSHOT) -->
                    <!--  
                    <copy todir="${eclipseUpdateSubSite}">
                      <fileset dir="${eusWork}" />
                      <compositemapper>
                        <globmapper from="*-SNAPSHOT.jar" to="*.SNAPSHOT.jar" />
                        <globmapper from="*-SNAPSHOT.jar.pack.gz" to="*.SNAPSHOT.jar.pack.gz" />
                        <regexpmapper from="^(.(?!-SNAPSHOT))*\.jar(.*)$$" to="\0" />                     
                      </compositemapper>
                    </copy>
                     -->
		                       
		                
		                <echo>Generate the p2 metadata and publish new artifacts</echo>
		                <!-- Append is needed because category info is incremental with each additional release -->
		                <!-- publishArtifacts is needed to generate p2 metadata for the pack.gz forms -->
		                <!--   - tried and failed: using ANT to copy artifacts to the target - doesn't update metadata
		                         for pack.gz form ! if you don't publish artifacts
		                         - doesn't update artifacts.jar 
		                       - deleting SNAPSHOT jars in the eclipse update subsite 
		                         - fails because the previous metadata has info about those jars  
		                           and that isn't deleted, and continues to be used
		                -->
		                <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="-reusePack200Files" />
		                  <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>
		                    
		                    <!-- 
                        <checksum algorithm="sha1" format="MD5SUM" forceoverwrite="yes">
                          <fileset dir="${eusWork}">
                            <include name="**/*.gz" />
                            <include name="**/*.jar" />
                          </fileset>
                        </checksum>
                        <checksum algorithm="md5" 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" />
		                        <include name="**/*.jar.pack.gz" />
		                      </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 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>
		
		                    <!-- 
                        <checksum algorithm="sha1" format="MD5SUM" forceoverwrite="yes">
                          <fileset dir="${eclipseUpdateSubSite}">
                             <include name="*.jar" />
                          </fileset>
                        </checksum>
		                    <checksum algorithm="md5" 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 pack,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>deleting previous version of packed files from work</echo>
		                <echo>---------------------------------------------------</echo>
		                <delete verbose="true">
		                  <fileset dir="${eusWork}/plugins" includes="*.pack.gz" />
		                </delete>
    
		                <echo> </echo>
		                <echo>Compressing signed plugin Jars in eus-work using pack200 - this may take a minute or 2</echo>
		                <echo>======================================================================================</echo>
                    <java jar="${uima-eclipse-jar-processor}" fork="true" failonerror="true" maxmemory="256m">
                      <arg line="-pack" />
                      <arg line="-verbose" />
                           <!--  only pack the plugins.  The publisher won't copy packed "features", 
                                 they are tiny anyways --> 
                      <arg line="-outputDir ${eusWork}/plugins" />
                      <arg line="${eusWork}/plugins" />
                    </java>
                    
		                <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 -->
                    <!-- publishArtifacts is needed to generate p2 metadata for the pack.gz forms -->
                    <!--   - tried and failed: using ANT to copy artifacts to the target - doesn't update metadata
                             for pack.gz form ! if you don't publish artifacts
                             - doesn't update artifacts.jar 
                           - deleting SNAPSHOT jars in the eclipse update subsite 
                             - fails because the previous metadata has info about those jars  
                               and that isn't deleted, and continues to be used
                    -->
                    <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="-reusePack200Files" />
                      <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>
                    <!-- 
                    <checksum algorithm="sha1" format="MD5SUM" forceoverwrite="yes">
                      <fileset dir="${eusWork}">
                        <include name="**/*.gz" />
                        <include name="**/*.jar" />
                      </fileset>
                    </checksum>
                    <checksum algorithm="md5" 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" />
                        <include name="**/*.jar.pack.gz" />
                      </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> 

                    <!-- 
                    <checksum algorithm="sha1" format="MD5SUM" forceoverwrite="yes">
                      <fileset dir="${eclipseUpdateSubSite}">
                         <include name="*.jar" />
                      </fileset>
                    </checksum> 
                    <checksum algorithm="md5" 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.2</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>
    
    <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>                    
		              </pluginExecutions>
		            </lifecycleMappingMetadata>
		          </configuration>
		        </plugin>
		      </plugins>
		    </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>findbugs</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>findbugs-maven-plugin</artifactId>
              <version>3.0.5</version>
              <executions>
                <execution>
                  <phase>package</phase>
                  <goals>
                    <goal>findbugs</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>cobertura</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>cobertura-maven-plugin</artifactId>
              <version>2.7</version>
              <configuration>
                <formats>
                  <format>xml</format>
                </formats>
              </configuration>
              <executions>
                <execution>
                  <phase>package</phase>
                  <goals>
                    <goal>cobertura</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pmd</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-pmd-plugin</artifactId>
              <version>3.8</version>
              <executions>
                <execution>
                  <phase>package</phase>
                  <goals>
                    <goal>cpd</goal>
                    <goal>pmd</goal>
                  </goals>
                </execution>
              </executions>
              <configuration>
                <linkXRef>false</linkXRef>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>
    
        <!-- **********  Backwards compatibility report generation profile ************** -->
    <profile>
      <id>enforce-compatibility</id>
      <activation>
        <file>
          <exists>marker-file-identifying-api-compatibility-check</exists>
        </file>
      </activation>
      <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>
          <!-- https://siom79.github.io/japicmp/MavenPlugin.html -->
          <plugin>              
            <groupId>com.github.siom79.japicmp</groupId>
            <artifactId>japicmp-maven-plugin</artifactId>
            <version>0.9.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>${project.basedir}/../uimaj-parent/src/main/groovy/api-report.groovy</postAnalysisScript>                  
              </parameter>
            </configuration>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>cmp</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          
          <!-- This copy is to have the api change report included in the source distribution -->
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>copy-API-change-report</id>
                <phase>install</phase>  <!-- must follow verify -->
                <goals><goal>run</goal></goals>
                <configuration>
                  <target>
                    <taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
                    <if>
                      <available file="${project.build.directory}/japicmp/" />
                      <then>
                        <copy toDir="${basedir}/api-change-report">
                          <fileset dir="${project.build.directory}/japicmp" />
                        </copy>
                      </then>
                    </if>
                  </target>
                </configuration>
              </execution>
            </executions>
            
          </plugin>
        </plugins>
      </build>
    </profile>
    
        <!-- ************ 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>