<?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>18</version>
    <relativePath />
  </parent>

  <groupId>org.apache.uima</groupId>
  <artifactId>parent-pom</artifactId>
  <version>11</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>

  <prerequisites>
    <!-- 2.2.0 is broken when deploying - checksums invalid -->
    <!-- 2.2.1 doesn't work -->
    <maven>3.3.9</maven>
  </prerequisites>
        
  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/uima/build/tags/parent-pom-11
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/uima/build/tags/parent-pom-11
    </developerConnection>
    <url>
      http://svn.apache.org/viewvc/uima/build/tags/parent-pom-11
    </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-11</jiraVersion>  <!-- for parent-pom-10. Change for each 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            -->
  <!-- ============================= -->
    <rat.version>0.12</rat.version>
    <maven.enforcer.version>3.0.0-M1</maven.enforcer.version>
    <maven.version>3.0.5</maven.version>
    <maven.javadoc.version>3.0.0-M1</maven.javadoc.version>
    <felix.bundle.version>3.3.0</felix.bundle.version>
    <surefire.version>2.20.1</surefire.version>
  
    <maven.compiler.target>1.7</maven.compiler.target>
    <maven.compiler.source>1.7</maven.compiler.source>
    <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>
        
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        
	      <plugin>
	        <groupId>org.apache.maven.plugins</groupId>
	        <artifactId>maven-source-plugin</artifactId>
	        <version>3.0.1</version>
	      </plugin>
      
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</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-enforcer-plugin</artifactId>
          <version>3.0.0-M1</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.4 in 2017)  -->
		    	<version>3.5</version>
	        <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>
        
        <!-- set Java 1.6 as the source and target of compilation -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.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-dependency-plugin</artifactId>
          <version>3.0.2</version>  <!-- see https://issues.apache.org/jira/browse/UIMA-2963 -->
        </plugin> 
       
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>${maven.javadoc.version}</version>
          <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>
          <version>3.0.2</version>
          <!-- version>2.3.2</version-->  <!-- version 2.4 gives error org.codehaus.plexus.archiver.jar.Manifest.merge(org.codehaus.plexus.archiver.jar.Manifest) 
                                     see http://comments.gmane.org/gmane.comp.ide.eclipse.plugins.m2eclipse.user/9189 -->
          <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>
          <version>1.8</version>

          <dependencies>
            <!-- 1.8.2 is used by v 1.7 of this plugin
            <dependency>
              <groupId>org.apache.ant</groupId>
              <artifactId>ant</artifactId>
                version 1.8.0 seems to be incompatible with some part of maven or m2eclipse 
              <version>1.7.1</version>
            </dependency>
             -->
            <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>
          <version>${rat.version}</version>
          <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 -->
                </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 -->
          <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>
      </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>
        <version>1.5</version>
        <executions>      
          <execution>
            <goals><goal>process</goal></goals>
            <configuration>
              <resourceBundles>
                <resourceBundle>org.apache.uima:uima-build-resources:${uimaBuildResourcesVersion}</resourceBundle>
              </resourceBundles>
            </configuration>
          </execution>
        </executions>
        <!--dependencies>  maybe for m2e
	        <dependency>
	          <groupId>org.slf4j</groupId>
	          <artifactId>slf4j-simple</artifactId>
	          <version>1.6.1</version>
	        </dependency>
        </dependencies-->
        
      </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>            
          </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 phase after package -->
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>maybe-fix-javadoc-line-ends</id>
                <phase>pre-integration-test</phase>
                <goals><goal>run</goal></goals>
                <configuration>
                  <target>
                    <taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />                
                    <if>
                      <available file="${project.build.directory}/site/apidocs/" />
                      <then>
                        <echo>Fixing line-endings for ${project.build.directory}/site/apidocs/</echo>
                        <fixcrlf srcdir="${project.build.directory}/site/apidocs/">
                          <include name="**/*.html" />
                        </fixcrlf>
                      </then>
                    </if>
                  </target>
                </configuration>
              </execution>
              <execution>
                <id>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" algorithm="sha1" file="${source-release}" />
                        <checksum format="MD5SUM" 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>    
          
        </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>

    <!-- **************************************** -->
    <!-- *   Produce Jira report                * -->
    <!-- **************************************** -->

    <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>
          <!-- overrides to enable release -->
          <!-- to release 5-SNAPSHOT which includes uima-build-resources, hard code that version to 4 -->
	        <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>
            <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>
            <executions>
              <execution>
                <id>default-cli</id>
                <configuration>
                  <fixVersionIds>${jiraVersion}</fixVersionIds>
                </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="sha1" format="MD5SUM">
                      <fileset dir="${project.build.directory}">
                        <include name="*.zip" />
                        <include name="*.gz" />
                      </fileset>
                    </checksum>
                    <checksum algorithm="md5" format="MD5SUM">
                      <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="sha1" format="MD5SUM">
		                      <fileset dir="${eusWork}">
		                        <include name="**/*.gz" />
		                        <include name="**/*.jar" />
		                      </fileset>
		                    </checksum>
		                    <checksum algorithm="md5" format="MD5SUM">
		                      <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="**/*.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="*.sha1" />
		                      <include name="*.md5" />
		                      <include name="*.asc" />
		                    </delete> 
		                                      
		                    <echo message="Generating checksums for updated artifacts.jar and content.jar" />
		                    <checksum algorithm="sha1" format="MD5SUM">
		                      <fileset dir="${eclipseUpdateSubSite}">
		                         <include name="*.jar" />
		                      </fileset>
		                    </checksum>
		
		                    <checksum algorithm="md5" format="MD5SUM">
		                      <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>
		
              <!-- ================================================= -->
              <!--   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="**/*.sha1" />
		                  <include name="**/*.md5" />
		                  <include name="**/*.asc" />
		                </delete>
		      
		                <echo message="Generating checksums for signed plugins" />

                    <checksum algorithm="sha1" format="MD5SUM">
                      <fileset dir="${eusWork}">
                        <include name="**/*.gz" />
                        <include name="**/*.jar" />
                      </fileset>
                    </checksum>
                    <checksum algorithm="md5" format="MD5SUM">
                      <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="**/*.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="*.sha1" />
                      <include name="*.md5" />
                      <include name="*.asc" />
                    </delete> 
                                     
                    <echo message="Generating checksums for updated artifacts.jar and content.jar" />
                    <checksum algorithm="sha1" format="MD5SUM">
                      <fileset dir="${eclipseUpdateSubSite}">
                         <include name="*.jar" />
                      </fileset>
                    </checksum> 

                    <checksum algorithm="md5" format="MD5SUM">
                      <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>
                <targetJdk>1.6</targetJdk>
                <linkXRef>false</linkXRef>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>