blob: 0e6c3d428c3f9fd1008bccb10453a8f5e9203fc0 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!--
This is the common UIMA parent pom.
It contains the project-wide defaults:
The parent of this POM is the official common Apache POM
Defines repositories for
Snapshots - at Apache - used during development, and for docbook olinks
Eclipse - where the good poms are
Central - adds default check-the checksums
PluginManagement defaults:
Java 1.6 as the base
Javadoc at 1.6 too
Jar Manifest entries, including the build-time
AntRun to pick a later version of ant with support for ant extensions like "if"
Specify plugin levels for non-standard plugins:
RAT
eclipse
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
<version>26</version>
<relativePath />
</parent>
<groupId>org.apache.uima</groupId>
<artifactId>parent-pom</artifactId>
<version>16-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Apache UIMA ${project.artifactId}</name>
<description>
UIMA (Unstructured Information Management Architecture).
UIMA promotes community development and reuse of annotators
that extract metadata from unstructured information (text, audio, video, etc.);
it provides for externalized declaration of type systems,
component configuration, aggregation, and more,
supports scalablity, and provides tooling.
</description>
<url>${uimaWebsiteUrl}</url>
<inceptionYear>2006</inceptionYear>
<mailingLists>
<mailingList>
<name>Apache UIMA Development List</name>
<subscribe>dev-subscribe@uima.apache.org</subscribe>
<unsubscribe>dev-unsubscribe@uima.apache.org</unsubscribe>
<post>mailto:dev@uima.apache.org</post>
<archive>https://lists.apache.org/list.html?dev@uima.apache.org</archive>
</mailingList>
<mailingList>
<name>Apache UIMA Users List</name>
<subscribe>user-subscribe@uima.apache.org</subscribe>
<unsubscribe>user-unsubscribe@uima.apache.org</unsubscribe>
<post>mailto:user@uima.apache.org</post>
<archive>https://lists.apache.org/list.html?user@uima.apache.org</archive>
</mailingList>
<mailingList>
<name>Apache UIMA Commits List</name>
<subscribe>commits-subscribe@uima.apache.org</subscribe>
<unsubscribe>commits-unsubscribe@uima.apache.org</unsubscribe>
<post>mailto:commits@uima.apache.org</post>
<archive>https://lists.apache.org/list.html?commits@uima.apache.org</archive>
</mailingList>
</mailingLists>
<scm>
<connection>scm:git:https://github.com/apache/uima-parent-pom</connection>
<developerConnection>scm:git:https://github.com/apache/uima-parent-pom</developerConnection>
<url>https://github.com/apache/uima-parent-pom</url>
<tag>HEAD</tag>
</scm>
<issueManagement>
<system>Jira</system>
<!-- the form of the url is from https://maven.apache.org/plugins/maven-changes-plugin/usage.html -->
<!--url>https://issues.apache.org/jira/BrowseProject.jspa?projectId=12310570</url-->
<url>https://issues.apache.org/jira/browse/UIMA</url>
</issueManagement>
<ciManagement>
<system>Jenkins</system>
<url>https://ci-builds.apache.org/</url>
<notifiers />
</ciManagement>
<!-- distribution management - is inherited from Apache POM
and specifies
https://repository.apache.org/service/local/staging/deploy/maven2
and for snapshots:
https://repository.apache.org/content/repositories/snapshots -->
<!-- for children POMs maven automatically adds their artifactId to the URL below
unless overridden -->
<distributionManagement>
<site>
<id>uima.apache.org</id> <!-- following maven convention -->
<name>Apache UIMA Website</name>
<url>${uimaWebsiteDistributionUrl}</url> <!-- on people.apache.org: /www/uima.apache.org -->
</site>
</distributionManagement>
<properties>
<!--
This property is overridden in child projects that are released, to correspond to the
Jira release category(ies) We specify something here, because if accidentally left blank, it
generates a giant request for all changes
-->
<!-- for parent-pom-14. Change for each release -->
<jiraVersion>parent-pom-15</jiraVersion>
<!-- *********************************************************************************************************** -->
<!-- U G H change manually for release (to remove -SNAPSHOT * -->
<!-- *********************************************************************************************************** -->
<!-- *********************************************************************************************************** -->
<!-- *********************************************************************************************************** -->
<uimaBuildResourcesVersion>6</uimaBuildResourcesVersion>
<uimaWebsiteUrl>https://uima.apache.org</uimaWebsiteUrl>
<uimaWebsiteDistributionUrl>scp://people.apache.org/www/uima.apache.org/</uimaWebsiteDistributionUrl>
<maven.build.timestamp.format>yyMMdd_HHmm</maven.build.timestamp.format>
<buildDateTime>${maven.build.timestamp}</buildDateTime>
<!-- these properties are for docbook processing. -->
<!-- olink databases -->
<dolArtifactId>uima-docbook-olink</dolArtifactId>
<dolClassifier>olink</dolClassifier>
<dolRepo>${settings.localRepository}/org/apache/uima/${dolArtifactId}/1-SNAPSHOT</dolRepo>
<dolZip>${dolArtifactId}-1-SNAPSHOT-${dolClassifier}.zip</dolZip>
<dolUnzipped>${dolRepo}/docbook-olink</dolUnzipped>
<dolBuiltFile>${project.build.directory}/</dolBuiltFile>
<dolBuiltArtifactFile>${project.build.directory}/${dolZip}</dolBuiltArtifactFile>
<pdfPaperType>USletter</pdfPaperType>
<!-- This next dir *must match* the one the PearPackagingMavenPlugin uses -->
<pearPackagingDir>${project.build.directory}/pearPackaging</pearPackagingDir>
<!-- poms wanting this need to set the postNoticeText to this value -->
<ibmNoticeText>
Portions of Apache UIMA were originally developed by
International Business
Machines Corporation and are
licensed to the Apache Software Foundation under the
"Software
Grant License Agreement", informally known as the
"IBM UIMA License Agreement".
Copyright (c)
2003, 2006 IBM Corporation.
</ibmNoticeText>
<!-- next line commented out - to let standard source-release assembly descriptor as specified
in standard Apache parent pom be used -->
<!-- SourceReleaseAssemblyDescriptor>multimodule-source-release</sourceReleaseAssemblyDescriptor-->
<!-- ============================================= -->
<!-- * V E R S I O N S -->
<!-- * most inherited from apache-wide parent pom -->
<!-- ============================================= -->
<maven.version>3.2.2</maven.version>
<!-- Tycho requires at least Java 11 -->
<javaVersionMinBuild>11</javaVersionMinBuild>
<felix.bundle.version>3.3.0</felix.bundle.version>
<maven.surefire.heap>512m</maven.surefire.heap>
</properties>
<repositories>
<!-- modify central repository access:
Turn on checksum checking-->
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<layout>default</layout>
<url>https://repo1.maven.org/maven2</url>
<releases>
<enabled>true</enabled>
<checksumPolicy>fail</checksumPolicy>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.agilejava.docbkx</groupId>
<artifactId>docbkx-maven-plugin</artifactId>
<version>2.0.17</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.8</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.16.0</version>
</plugin>
<plugin>
<groupId>org.apache.uima</groupId>
<artifactId>PearPackagingMavenPlugin</artifactId>
<version>3.3.0</version>
</plugin>
<plugin>
<groupId>com.github.siom79.japicmp</groupId>
<artifactId>japicmp-maven-plugin</artifactId>
<version>0.15.7</version>
<dependencies>
<dependency>
<!-- See: https://issues.apache.org/jira/browse/UIMA-6349 -->
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-jsr223</artifactId>
<version>2.5.17</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>4.7.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.0.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.7.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.3.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.12.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<!-- https://issues.apache.org/jira/browse/UIMA-5367 -->
<retryFailedDeploymentCount>10</retryFailedDeploymentCount>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
<plugin>
<groupId>net.nicoulaj.maven.plugins</groupId>
<artifactId>checksum-maven-plugin</artifactId>
<version>1.11</version>
</plugin>
<!-- assembly plugin
Disable running assembly:assembly with
warning message to use install instead -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>default-cli</id>
<configuration>
<descriptors>
<descriptor>do-not-use--mvn-assembly-assembly--instead-use-mvn-install</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.3.0</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.6.4</version>
<executions>
<execution>
<!-- force to use process-classes phase so runs after Java Annotations are available -->
<!-- https://jira.codehaus.org/browse/MPLUGIN-267 -->
<id>default-descriptor</id>
<phase>process-classes</phase>
</execution>
<execution>
<id>generate-helpmojo</id>
<goals>
<goal>helpmojo</goal>
</goals>
</execution>
</executions>
<configuration>
<extractors>
<extractor>java-annotations</extractor>
</extractors>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<source>${maven.compiler.source}</source>
<!-- https://issues.apache.org/jira/browse/UIMA-5369 -->
<javadocVersion>${maven.compiler.source}</javadocVersion>
<notimestamp>true</notimestamp>
<encoding>UTF-8</encoding>
<!-- if next is omitted, causes all projects in reactor that don't
already have full javadocs built, to have them built -->
<detectOfflineLinks>false</detectOfflineLinks>
<quiet>true</quiet>
<!-- identify tags we use so we don't get warning messages for them -->
<tags>
<tag>
<name>generated</name>
<placement>X</placement>
</tag>
<tag>
<name>ordered</name>
<placement>X</placement>
</tag>
<tag>
<name>modifiable</name>
<placement>X</placement>
</tag>
<tag>
<name>model</name>
<placement>X</placement>
</tag>
<tag>
<name>pre</name>
<placement>X</placement>
</tag>
</tags>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<!-- turn off javadoc build for each module by default
(unless apache-release - for speed)
override in individual cases to turn back on if wanted -->
<phase />
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<archive>
<manifestEntries>
<Project-Title>Apache UIMA</Project-Title>
<!-- Implementation-Title>${pom.name}</Implementation-Title from addDefaultImplementationEntries-->
<!-- Implementation-Version>${pom.version}</Implementation-Version from addDefaultImplementationEntries-->
<!-- Implementation-Vendor>Apache Software Foundation</Implementation-Vendor from addDefaultImplementationEntries-->
<!-- also added by default:
Implementation-Vendor-Id: ${pom.groupId} -->
<Implementation-Url>${uimaWebsiteUrl}</Implementation-Url>
<Implementation-License>https://www.apache.org/licenses/LICENSE-2.0.txt</Implementation-License>
<Build-Date>${buildDateTime}</Build-Date>
</manifestEntries>
<manifest>
<addDefaultSpecificationEntries>false</addDefaultSpecificationEntries>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.10.12</version>
</dependency>
<dependency> <!-- for ant extension supporting "if" -->
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>20020829</version>
</dependency>
<!-- <containsregexp> form for filesets -->
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-apache-regexp</artifactId>
<version>1.10.12</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>5.1.6</version>
<extensions>true</extensions>
<executions>
<execution>
<id>uima-bundle</id>
<goals>
<goal>manifest</goal>
</goals>
<phase>process-classes</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<version>0.13</version>
<executions>
<execution>
<id>default-cli</id>
<goals>
<goal>check</goal>
</goals>
<phase>verify</phase>
<!-- default configuration -->
<configuration>
<consoleOutput>true</consoleOutput>
<excludes>
<exclude>**/.tycho-consumer-pom.xml</exclude>
<exclude>.github/**/*</exclude> <!-- GitHub config/template files -->
<exclude>release.properties</exclude> <!-- generated file -->
<exclude>README*</exclude>
<exclude>RELEASE_NOTES*</exclude>
<exclude>issuesFixed/**</exclude> <!-- generated file -->
<!-- Maven profile trigger files -->
<exclude>**/marker-file-identifying-*</exclude>
<exclude>**/marker-file-enabling-*</exclude>
<exclude>DEPENDENCIES</exclude> <!-- generated file -->
<exclude>**/MANIFEST.MF</exclude> <!-- MANIFEST.MF files cannot have comments -->
<exclude>**/*.ppt</exclude> <!-- power point sources -->
<exclude>**/*.sha512</exclude>
<exclude>**/*.patch.txt</exclude>
<exclude>**/.factorypath</exclude> <!-- Eclipse APT generated file -->
<exclude>**/.idea/**</exclude> <!-- IDEA config files -->
<exclude>**/.settings/**</exclude> <!-- Eclipse config files -->
<exclude>**/.project</exclude> <!-- Eclipse config files -->
<exclude>**/.classpath</exclude> <!-- Eclipse config files -->
</excludes>
</configuration>
</execution>
</executions>
</plugin>
<!-- generate the issuesFixed report of Jiras fixed in this release -->
<!-- uses the property "jiraVersion" to select the version -->
<!-- Runs automatically during release.
Can also be run manually using
mvn changes:jira-report -N -DjiraVersion=xxxxxx where
xxxxxx is the jira internal version number which you can get
from the Jira url (see parameter fixforversion=xxxxxx)
by going to https://issues.apache.org/jira/browse/UIMA
and selecting "Releases" and then going to the
particular version and looking in the url for
that version. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-changes-plugin</artifactId>
<version>2.12.1</version>
<dependencies> <!-- needed for java 11 -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>default-cli</id>
<goals>
<goal>jira-report</goal>
</goals>
<!-- don't use generate-sources - because javadoc plugin re-exec's that -->
<phase>generate-resources</phase>
<configuration>
<useJql>true</useJql>
<fixVersionIds>${jiraVersion}</fixVersionIds>
<columnNames>Type,Key,Status,Summary</columnNames>
<resolutionIds>Fixed</resolutionIds>
<statusIds>Closed,Resolved</statusIds>
<sortColumnNames>Type, Key</sortColumnNames>
<!-- changed sortColumnNames for Jira 5
was: <sortColumnNames>Status, Key, Type</sortColumnNames>
-->
<outputDirectory>${basedir}/issuesFixed/</outputDirectory>
<maxEntries>1000</maxEntries> <!-- hopefully, bigger than ever needed -->
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.uima</groupId>
<artifactId>uima-build-helper-maven-plugin</artifactId>
<version>7</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>${maven.version}</version>
</requireMavenVersion>
<requireJavaVersion>
<version>${javaVersionMinBuild}</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<!-- sets the following properties:
parsedVersion.majorVersion
parsedVersion.minorVersion
parsedVersion.incrementalVersion
parsedVersion.qualifier
parsedVersion.buildNumber
parsedVersion.osgiVersion
-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>parse-project-version</id>
<goals>
<goal>parse-version</goal>
</goals>
<configuration>
<propertyPrefix>parsedVersion</propertyPrefix>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.uima</groupId>
<artifactId>uima-build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>set buildYear and buildMonth</id>
<goals>
<goal>parse-date-time</goal>
</goals>
<configuration>
<parseSpecs>
<parseSpec>
<name>buildYear</name>
<format>yyyy</format>
</parseSpec>
<parseSpec>
<name>buildMonth</name>
<format>MMMM</format>
</parseSpec>
</parseSpecs>
</configuration>
</execution>
</executions>
</plugin>
<!-- this overrides the apache pom to
use this resource bundle which
allows additional text after the NOTICE file
Note: putting this in the pluginManagement section
fails to override the configuration from the
Apache common parent pom -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<resourceBundles>
<resourceBundle>org.apache.uima:uima-build-resources:${uimaBuildResourcesVersion}</resourceBundle>
</resourceBundles>
</configuration>
</execution>
</executions>
</plugin>
<plugin> <!-- https://issues.apache.org/jira/browse/UIMA-2966 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>fix-text-file-line-endings</id>
<goals>
<goal>run</goal>
</goals>
<phase>compile</phase>
<configuration>
<target>
<taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
<if>
<available file="${project.build.outputDirectory}" />
<then>
<fixcrlf srcdir="${project.build.outputDirectory}">
<include name="**/META-INF/DEPENDENCIES" />
<include name="**/META-INF/LICENSE" />
<include name="**/META-INF/NOTICE" />
</fixcrlf>
</then>
</if>
</target>
</configuration>
</execution>
<execution>
<id>dup-meta-jar-cleanup</id>
<goals>
<goal>run</goal>
</goals>
<phase>prepare-package</phase> <!-- before Jar plugin -->
<configuration>
<target>
<delete file="${project.build.directory}/classes/META-INF/maven/${project.groupId}/${project.artifactId}/pom.xml" quiet="true" />
<delete file="${project.build.directory}/classes/META-INF/maven/${project.groupId}/${project.artifactId}/pom.properties" quiet="true" />
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
</configuration>
</plugin>
</plugins>
</build>
<!--reporting-->
<profiles>
<!-- ************************************************** -->
<!-- * apache-release * -->
<!-- * NOTE: This profile is activated while * -->
<!-- * running the Maven build pipeline, usually * -->
<!-- * clean verify (for mvn release:prepare) or * -->
<!-- * deploy (for mvn release;perform), * -->
<!-- * but is not activated for the * -->
<!-- * outer execution for mvn release... * -->
<!-- * on the pom being released * -->
<!-- ************************************************** -->
<!-- fix apache common pom -->
<profile>
<id>apache-release</id>
<properties>
<isApacheRelease>true</isApacheRelease>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<!-- turn back on javadoc build for each module by default
https://issues.apache.org/jira/browse/UIMA-3251 -->
<phase>package</phase>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<!-- to support multi-module source-release builds -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.uima</groupId>
<artifactId>uima-build-resources</artifactId>
<version>${uimaBuildResourcesVersion}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>source-release-assembly</id>
<!-- note: this is configured above to run only at execution root -->
<configuration>
<!-- by not attaching, we prevent the source release from going to Maven repos -->
<!-- https://issues.apache.org/jira/browse/UIMA-3247 -->
<attach>false</attach>
</configuration>
</execution>
</executions>
</plugin>
<!-- to run source plugin without forking -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources-nf</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
<execution>
<id>attach-sources</id>
<phase /> <!-- turn off the plain jar one -->
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<executions>
<execution>
<id>default-cli</id>
</execution>
</executions>
</plugin>
<!-- to fix up any generated Javadocs to have consistent line ends in html files -->
<!-- runs in several phases after package -->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>maybe-fix-javadoc-line-ends</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
<if>
<available file="${project.build.directory}/site/apidocs/" />
<then>
<echo>Fixing line-endings for ${project.build.directory}/site/apidocs/</echo>
<fixcrlf srcdir="${project.build.directory}/site/apidocs/">
<include name="**/*.html" />
</fixcrlf>
</then>
</if>
</target>
</configuration>
</execution>
<execution>
<id>copy-pom-to-target</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<!-- copy to target so checksum-maven-plugin can sha512 checkum it -->
<target>
<taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
<if>
<!--
- In some Tycho modules (e.g. feature modules), Tycho generates a "consumer
- pom" which may contain additional information injected by Tycho based on
- the Eclipse metadata files. If such a consumer pom is present, we need
- to use it as a basis for calculating the SHA512 hash and the GPG signature
-->
<available file="${project.basedir}/.tycho-consumer-pom.xml" />
<then>
<property name="pom-file-src" location="${project.basedir}/.tycho-consumer-pom.xml" />
</then>
<else>
<property name="pom-file-src" location="${project.basedir}/pom.xml" />
</else>
</if>
<property name="pom-file-tgt" location="${project.build.directory}/${project.artifactId}-${project.version}.pom" />
<copy file="${pom-file-src}" tofile="${pom-file-tgt}" />
</target>
</configuration>
</execution>
<execution>
<!--
- The POM checksum needs a separate treatment because it is not included in the
- attached artifacts.
- Cannot use checksum-maven-plugin:files here because of
- https://github.com/nicoulaj/checksum-maven-plugin/issues/136
-->
<id>pom-checksum</id>
<phase>verify</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
<fileset dir="${project.build.directory}">
<include name="${project.artifactId}-${project.version}.pom" />
</fileset>
</checksum>
</target>
</configuration>
</execution>
<execution>
<id>sign and checksum source-release.zip</id>
<phase>verify</phase> <!-- after source-release is built -->
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
<property name="source-release" location="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" />
<if>
<available file="${source-release}" />
<then>
<echo message="Generating checksums for source-release.zip" />
<checksum format="MD5SUM" forceoverwrite="yes" algorithm="SHA-512" fileext=".sha512" file="${source-release}" />
<echo message="Generating gpg signatures for source-release.zip" />
<exec executable="gpg" failonerror="true">
<arg value="--detach-sign" />
<arg value="--armor" />
<arg value="--batch" />
<arg value="${source-release}" />
</exec>
</then>
</if>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<executions>
<execution>
<id>load-plugin</id>
<phase>validate</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<skip>true</skip>
</configuration>
</execution>
<execution>
<id>sign-release-artifacts</id>
<configuration>
<excludes>
<exclude>**/*.sha512</exclude>
<exclude>**/*.asc</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.nicoulaj.maven.plugins</groupId>
<artifactId>checksum-maven-plugin</artifactId>
<executions>
<!-- POM checksum is calculated separately above using antrun - see comment there -->
<execution>
<id>artifacts-checksum</id>
<goals>
<goal>artifacts</goal>
</goals>
<configuration>
<attachChecksums>true</attachChecksums>
<appendFilename>true</appendFilename>
<algorithms>
<algorithm>SHA-512</algorithm>
</algorithms>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<!--
- The POM checksum needs a separate treatment because it is not included in the
- attached artifacts.
-->
<id>attach-artifacts</id>
<phase>verify</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/${project.artifactId}-${project.version}.pom.sha512</file>
<type>pom.sha512</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- *************************************************** -->
<!-- * Run Rat report * -->
<!-- *************************************************** -->
<profile>
<id>run-rat-report</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<executions>
<execution>
<id>default-cli</id>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- *********************************************** -->
<!-- * Generate JIRA issues report * -->
<!-- *********************************************** -->
<profile>
<id>mavenJirareport</id>
<activation>
<file>
<exists>marker-file-identifying-parent-pom</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-remote-resources-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<executions>
<execution>
<id>clean-jira-changes-report</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
<configuration>
<filesets>
<fileset>
<directory>issuesFixed</directory>
</fileset>
</filesets>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-changes-plugin</artifactId>
<executions>
<execution>
<id>default-cli</id>
<configuration>
<fixVersionIds>${jiraVersion}</fixVersionIds>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- ********************************** -->
<!-- * Docbook Processing * -->
<!-- ********************************** -->
<!-- Skip docbook processing unless the leaf child project has a docbook directory -->
<profile>
<id>process-docbook</id>
<activation>
<file>
<exists>src/docbook</exists>
</file>
</activation>
<build>
<plugins>
<!--
Use the dependency:unpack goal to get the shared resource that has the docbook-shared
directory.
Unpack into spot relative to project - because these are referred to in docbook sources
using relative references
Also unpack next to docbook-olink in repository location for olink info, because the
site.xml files use relative location to get at the uima entities
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<!--
Use the dependency:unpack goal to get the shared resource that has the
docbook-shared directory
Unpack into spot relative to project - because these are referred to in docbook
sources using relative references
-->
<id>copyDocbookInfo</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<overWriteIfNewer>true</overWriteIfNewer>
<artifactItems>
<artifactItem>
<groupId>org.apache.uima</groupId>
<artifactId>uima-build-resources</artifactId>
<version>${uimaBuildResourcesVersion}</version>
<includes>docbook-shared/**</includes>
<outputDirectory>${project.build.directory}</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
<execution>
<!--
Also unpack next to docbook-olink in repository location for olink info, because
the site.xml files use relative location to get at the UIMA entities
-->
<id>copyDocbookInfoNextToOlink</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<overWriteIfNewer>true</overWriteIfNewer>
<markersDirectory>${dolRepo}/dependency-maven-plugin-markers</markersDirectory>
<artifactItems>
<artifactItem>
<groupId>org.apache.uima</groupId>
<artifactId>uima-build-resources</artifactId>
<version>${uimaBuildResourcesVersion}</version>
<includes>docbook-shared/**</includes>
<outputDirectory>${dolRepo}</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
<!-- use the dependency:unpack goal to get the olink databases -->
<execution>
<id>getOlink</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<overWriteIfNewer>true</overWriteIfNewer>
<markersDirectory>${dolRepo}/dependency-maven-plugin-markers</markersDirectory>
<artifactItems>
<artifactItem>
<groupId>org.apache.uima</groupId>
<artifactId>${dolArtifactId}</artifactId>
<version>1-SNAPSHOT</version>
<type>zip</type>
<classifier>${dolClassifier}</classifier>
<outputDirectory>${dolUnzipped}</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.agilejava.docbkx</groupId>
<artifactId>docbkx-maven-plugin</artifactId>
<configuration> <!-- general configuration for both HTML and PDF -->
<sourceDirectory>${basedir}/src/docbook</sourceDirectory>
<includes>${bookNameRoot}.xml</includes>
<highlightSource>1</highlightSource>
<xincludeSupported>true</xincludeSupported>
<!-- olink common to PDF and HTML -->
<collectXrefTargets>yes</collectXrefTargets>
</configuration>
<executions>
<execution>
<id>html</id>
<goals>
<goal>generate-html</goal>
</goals>
<phase>package</phase>
<configuration>
<targetDirectory>${project.build.directory}/site/d</targetDirectory>
<htmlCustomization>${project.build.directory}/docbook-shared/top/html-single.xsl</htmlCustomization>
<!-- olink -->
<targetDatabaseDocument>file:///${dolUnzipped}/htmlsingle/site.xml</targetDatabaseDocument>
<targetsFilename>${dolUnzipped}/htmlsingle/${bookNameRoot}.db</targetsFilename>
</configuration>
</execution>
<execution>
<id>pdf</id>
<goals>
<goal>generate-pdf</goal>
</goals>
<phase>package</phase>
<configuration>
<!--
PDF: generate first in docbkx, then move. Because PDF generates an extra temp
file xxx.fo which we want to keep a bit in target in case of debug need
-->
<foCustomization>${project.build.directory}/docbook-shared/top/pdf.xsl</foCustomization>
<!-- olink -->
<targetDatabaseDocument>file:///${dolUnzipped}/pdf/site.xml</targetDatabaseDocument>
<targetsFilename>${dolUnzipped}/pdf/${bookNameRoot}.db</targetsFilename>
<fop1Extensions>true</fop1Extensions>
<fontSelectionStrategy>character-by-character</fontSelectionStrategy>
<paperType>${pdfPaperType}</paperType>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.docbook</groupId>
<artifactId>docbook-xml</artifactId>
<version>4.4</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<!-- copy the images to the html/images dir -->
<execution>
<id>docbook-copy-images</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>package</phase>
<configuration>
<outputDirectory>${project.build.directory}/site/d/images</outputDirectory>
<resources>
<resource>
<directory>src/docbook/images</directory>
</resource>
</resources>
</configuration>
</execution>
<!-- copy the CSS stylesheet to the HTML dir -->
<execution>
<id>docbook-copy-css</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>package</phase>
<configuration>
<outputDirectory>${project.build.directory}/site/d/css</outputDirectory>
<resources>
<resource>
<directory>${project.build.directory}/docbook-shared/css</directory>
</resource>
</resources>
</configuration>
</execution>
<!-- move the pdf from the docbkx to the site/d/ -->
<execution>
<id>docbook-move-pdf</id>
<goals>
<goal>copy-resources</goal>
</goals> <!-- no "move" goal, use copy -->
<phase>package</phase>
<configuration>
<outputDirectory>${project.build.directory}/site/d</outputDirectory>
<resources>
<resource>
<directory>${project.build.directory}/docbkx/pdf</directory>
<excludes>
<exclude>**.fo</exclude>
</excludes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- ************************************ -->
<!-- * Build Custom Binary Distribution * -->
<!-- ************************************ -->
<profile>
<id>build distribution</id>
<activation>
<file>
<exists>src/main/assembly/bin.xml</exists>
</file>
</activation>
<build>
<plugins>
<!--
assembly configuration to create bin and src distributions from conventional places
-->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>uima-distr</id>
<goals>
<goal>single</goal>
</goals>
<phase>integration-test</phase> <!-- after first copies from jar/docbk pkg -->
<configuration>
<descriptors>
<descriptor>src/main/assembly/bin.xml</descriptor>
<!-- next is replaced with more standard source-release assembly -->
<!-- descriptor>src/main/assembly/src.xml</descriptor -->
</descriptors>
<finalName>${assemblyFinalName}</finalName>
<tarLongFileMode>gnu</tarLongFileMode>
</configuration>
</execution>
</executions>
</plugin>
<!-- https://issues.apache.org/jira/browse/UIMA-2008 -->
<!-- no Maven deployment of this project's artifacts -->
<!-- binary build artifact deployed from Apache mirror system after release -->
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>generate checksums for binary artifacts</id>
<goals>
<goal>run</goal>
</goals>
<phase>verify</phase>
<configuration>
<target>
<checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
<fileset dir="${project.build.directory}">
<include name="*.zip" />
<include name="*.gz" />
</fileset>
</checksum>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- ************************************ -->
<!-- * Build Eclipse Plugin * -->
<!-- ************************************ -->
<profile>
<id>build eclipse plugins</id>
<activation>
<file>
<exists>marker-file-identifying-eclipse-plugin</exists>
</file>
</activation>
<build>
<!-- resources are "merged" -->
<!-- needed to copy resources, icons, and the plugin.xml to the result -->
<resources>
<resource>
<directory>.</directory>
<includes>
<include>plugin.xml</include>
<!-- include subdir of icons too, [UIMA-1958] -->
<include>icons/**/*.*</include>
</includes>
</resource>
<!-- need the following, is not "merged" from the overall maven superPom -->
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<pluginManagement>
<!--
run the felix plugin in manifest mode because that plugin doesn't resolve all properties
e.g., parsedVersion.osgiVersion
-->
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<executions>
<execution>
<id>uima-bundle</id>
<goals>
<goal>manifest</goal>
</goals>
<phase>process-classes</phase>
<configuration>
<!-- we put the generate manifest in the spot where Eclipse
plugins think it will be -->
<manifestLocation>META-INF/</manifestLocation>
</configuration>
</execution>
<!-- turn off unneeded executions -->
<execution>
<id>default-deploy</id>
<phase />
</execution>
<execution>
<id>default-install</id>
<phase />
</execution>
<execution>
<id>default-bundle</id>
<phase />
</execution>
</executions>
</plugin>
<!-- pick up the manifest felix generates -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
<!-- special eclipse:eclipse configuration for Eclipse plugins -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<!-- version set in parent-pom-top -->
<configuration>
<manifest>.ignore</manifest>
<pde>true</pde>
<!-- set next to false because refs to runtime project
as a project don't work (because it is a library project,
and has no sources of its own
A consequence of this: If you change code a plugin depends on,
run "mvn install" on the changed code to get your plugin to
pick up the changes
-->
<useProjectReferences>false</useProjectReferences>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<!-- https://issues.apache.org/jira/browse/UIMA-2967 -->
<execution>
<id>clear-META-INF</id>
<goals>
<goal>run</goal>
</goals>
<phase>compile</phase> <!-- before maven-bundle-plugin plugin -->
<configuration>
<target>
<delete file="META-INF/MANIFEST.MF" quiet="true" />
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- ************************************ -->
<!-- * Build Eclipse Feature * -->
<!-- ************************************ -->
<profile>
<id>build eclipse features</id>
<activation>
<file>
<exists>marker-file-identifying-eclipse-feature</exists>
</file>
</activation>
<build>
<!-- turn on filtering for these resources -->
<resources>
<resource>
<directory>${basedir}</directory>
<includes>
<include>feature.properties</include>
<include>feature.xml</include>
<include>uima-eclipse-user-agreement.html</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<!--
The feature.xml is filtered here, rather than in going from the top level place to the
Jar, because Eclipse feature manipulation uses the top level value.
-->
<plugins>
<!--
filter the feature.xml to have the right version info for Eclipse at the top level
-->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>filter feature.xml</id>
<!-- run before process-resources, which uses this result -->
<phase>generate-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>feature.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- ************************************ -->
<!-- * Build Eclipse Update Subsite * -->
<!-- ************************************ -->
<profile>
<id>build-eclipse-update-subsite</id>
<activation>
<file>
<exists>marker-file-identifying-eclipse-update-site</exists>
</file>
</activation>
<properties>
<eusWork>${project.build.directory}/eus-work</eusWork>
<distsvnroot>https://dist.apache.org/</distsvnroot>
</properties>
<build>
<plugins>
<!-- ============================================================================ -->
<!-- U s e o f d i s t . a p a c h e . o r g S V N -->
<!-- -->
<!-- Goals: avoid copying to /release/, use svn commit to do -->
<!-- just the changed files -->
<!-- -->
<!-- Safety (abandonded) -->
<!-- for safety, work in the /dev/ area -->
<!-- For vote, user can do commit to /dev/ area -->
<!-- After vote, user does svn switch to /release/ area and commits -->
<!-- Above aproach abandoned, just be careful not to commit before vote -->
<!-- -->
<!-- svn (release) -> checkout -->
<!-- srcs -> eus-work - - - - +-> subsite -> (manual) commit -->
<!-- SC SC -->
<!-- -->
<!-- SC = sign & checksum -->
<!-- the 2nd SC is for the updated artifacts and contents of the subsite -->
<!-- ============================================================================ -->
<!-- ============================================================================ -->
<!-- O v e r a l l F l o w -->
<!-- -->
<!-- PROCESS-SOURCES -->
<!-- New features to be included -> target/eus-work -->
<!-- (eus = Eclipse Update Site) -->
<!-- -->
<!-- filter category.xml to pick up version # -->
<!-- -->
<!-- PACKAGE -->
<!-- Release SVN checkout -> target/eclipse-update-site/[component] -->
<!-- (This is the current site - to be updated) -->
<!-- -->
<!-- Publish metadata goes from target/eus-work -> eclipse-update-site/[comp] -->
<!-- (publish run in "append" mode) -->
<!-- -->
<!-- Category update goes from target/eus-work -> eclipse-update-site/[comp] -->
<!-- -->
<!-- (if apache-release: -->
<!-- do checksums and sign in target/eus-work -->
<!-- delete prev checksums and signature for artifacts/content.jar -->
<!-- add new checksum/sign for these two jars -->
<!-- copy all checksums/signatures from eus-work -->
<!-- ) -->
<!-- -->
<!-- ============================================================================ -->
<!-- ============================================================================ -->
<!-- Alternate flow if apache-release is not defined - -->
<!-- skip getting previous update site from dist.apache.org -->
<!-- ============================================================================ -->
<!-- filter the category.xml to have the right version info
for Eclipse at the top level -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>filter-category.xml</id>
<!-- run before package, which uses this result -->
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>category.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>BuildUpdateSite-clearWorkAreas</id>
<phase>initialize</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<delete dir="${eusWork}" />
</target>
</configuration>
</execution>
<execution>
<id>BuildUpdateSite-pack-svnget-buildMetadata-commit-to-dev</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
<!-- =================================== -->
<!-- Check we can access build tools -->
<!-- =================================== -->
<!-- if the property uima-maven-build-eclipse-home is set, use it, otherwise don't -->
<condition property="eclipse.home" value="${uima-maven-build-eclipse-home}">
<not>
<equals arg1="${uima-maven-build-eclipse-home}" arg2="$${uima-maven-build-eclipse-home}" />
</not>
</condition>
<property environment="envVar" />
<condition property="eclipse.home" value="${envVar.ECLIPSE_HOME}">
<isset property="envVar.ECLIPSE_HOME" />
</condition>
<fail unless="eclipse.home" message="********** Please set up and use an ant property eclipse.home set to an Eclipse installation at level 3.3 or later, e.g. c:/eclipses/3.3/eclipse" />
<!-- =================================== -->
<!-- SVN checkout from release -->
<!-- and checkout to subsite -->
<!-- =================================== -->
<if>
<equals arg1="${isApacheRelease}" arg2="true" />
<then>
<echo>checking out eclipse update subsite ${eclipseUpdateSiteComponent} from
dist ...release...</echo>
<delete dir="${eclipseUpdateSubSite}" quiet="true" />
<exec executable="svn" failonerror="true">
<arg value="checkout" />
<arg value="${distsvnroot}repos/dist/release/uima/eclipse-update-site/${eclipseUpdateSiteComponent}" />
<arg value="${eclipseUpdateSubSite}" />
</exec>
<!-- abandon safety for now
<echo>switching this checkout to ...dev... for safety</echo>
<exec executable="svn">
<arg value="switch" />
<arg value="- -force" /> remove space between 2 dashes if uncommented
<arg value="- -accept" /> remove space between 2 dashes if uncommented
<arg value="mine-full" />
<arg value="${distsvnroot}repos/dist/dev/uima/eclipse-update-site/${eclipseUpdateSiteComponent}" />
<arg value="${eclipseUpdateSubSite}" />
</exec>
-->
</then>
<else>
<echo>skipping checkout of current svn dist release (because not
apache-release)</echo>
<!-- https://issues.apache.org/jira/browse/UIMA-3501 -->
<delete dir="${eclipseUpdateSubSite}" quiet="true" />
</else>
</if>
<echo>Save conditioned Jars prior to signing, in case of redo</echo>
<echo>-------------------------------------------------------</echo>
<copy todir="${project.build.directory}/saved/features" failonerror="true">
<fileset dir="${eusWork}/features" includes="*.jar" />
</copy>
<copy todir="${project.build.directory}/saved/plugins" failonerror="true">
<fileset dir="${eusWork}/plugins" includes="*.jar" />
</copy>
<echo>Generate the p2 metadata and publish new artifacts</echo>
<!-- Append is needed because category info is incremental with each additional release -->
<java jar="${eclipse-equinox-launcher}" fork="true" failonerror="true" maxmemory="256m">
<arg line="-application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher" />
<arg line="-metadataRepository file:///${eclipseUpdateSubSite}" />
<arg line="-artifactRepository file:///${eclipseUpdateSubSite}" />
<arg line="-source ${eusWork}" />
<arg line="-configs ANY.ANY.ANY" />
<arg line="-publishArtifacts" />
<arg line="-compress" />
<arg line="-append" />
</java>
<echo>Augment p2 metadata with category information</echo>
<java jar="${eclipse-equinox-launcher}" fork="true" failonerror="true" maxmemory="256m">
<arg line="-application org.eclipse.equinox.p2.publisher.CategoryPublisher" />
<arg line="-metadataRepository file:///${eclipseUpdateSubSite}" />
<arg line="-categoryDefinition file:///${basedir}/category.xml" />
<arg line="-categoryQualifier apache-uima" />
<arg line="-compress" />
</java>
<!-- ========================================== -->
<!-- If apache-release, do checksums and sign -->
<!-- ========================================== -->
<if>
<equals arg1="${isApacheRelease}" arg2="true" />
<then>
<echo message="Generating checksums for new features and plugins" />
<checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
<fileset dir="${eusWork}">
<include name="**/*.gz" />
<include name="**/*.jar" />
</fileset>
</checksum>
<echo message="Generating gpg signatures for new features and plugins" />
<apply executable="gpg" dir="${eusWork}" failonerror="true">
<arg value="--detach-sign" />
<arg value="--armor" />
<!-- batch flag needed to avoid gpg hang up -->
<arg value="--batch" />
<fileset dir="${eusWork}">
<include name="**/*.jar" />
</fileset>
</apply>
<echo message="Copying the checksums and signatures to the update subsite" />
<copy todir="${eclipseUpdateSubSite}" failonerror="true">
<fileset dir="${eusWork}">
<include name="**/*.asc" />
<include name="**/*.sha512" />
</fileset>
</copy>
<echo message="Clearing previous checksums and signatures for update artifacts.jar and content.jar" />
<delete dir="${eclipseUpdateSubSite}">
<include name="*.asc" />
<include name="**/*.sha512" />
</delete>
<echo message="Generating checksums for updated artifacts.jar and content.jar" />
<checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
<fileset dir="${eclipseUpdateSubSite}">
<include name="*.jar" />
</fileset>
</checksum>
<echo message="Generating gpg signatures for artifacts.jar and content.jar" />
<apply executable="gpg" dir="${eclipseUpdateSubSite}" failonerror="true">
<arg value="--detach-sign" />
<arg value="--armor" />
<!-- batch flag needed to avoid GPG hang up -->
<arg value="--batch" />
<fileset dir="${eclipseUpdateSubSite}">
<include name="*.jar" />
</fileset>
</apply>
</then>
</if>
</target>
</configuration>
</execution>
<!-- ================================================= -->
<!-- -->
<!-- P O S T JAR S I G N I N G by Digicert -->
<!-- -->
<!-- Rerun publish and sign after jar-signing -->
<!-- Has NO GOAL or PHASE, so doesn't run normally -->
<!-- run using mvn -->
<!-- antrun:run@make-subsite-after-signing -->
<!-- ================================================= -->
<execution>
<id>make-subsite-after-signing</id>
<configuration>
<target>
<taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
<!-- =================================== -->
<!-- Check we can access build tools -->
<!-- =================================== -->
<!-- if the property uima-maven-build-eclipse-home is set, use it, otherwise don't -->
<condition property="eclipse.home" value="${uima-maven-build-eclipse-home}">
<not>
<equals arg1="${uima-maven-build-eclipse-home}" arg2="$${uima-maven-build-eclipse-home}" />
</not>
</condition>
<property environment="envVar" />
<condition property="eclipse.home" value="${envVar.ECLIPSE_HOME}">
<isset property="envVar.ECLIPSE_HOME" />
</condition>
<echo>
</echo>
<echo>Resetting the content and artifacts for the site</echo>
<echo>------------------------------------------------</echo>
<!-- This is needed because the previous pre-build step already
updated the content and artifacts jar with the new versions -->
<delete verbose="true">
<fileset dir="${eclipseUpdateSubSite}" includes="content.jar,artifacts.jar" />
</delete>
<copy todir="${eclipseUpdateSubSite}" failonerror="false">
<fileset dir="${project.build.directory}/saved" includes="content.jar,artifacts.jar" />
</copy>
<echo>
</echo>
<echo>Generate the p2 metadata and publish new artifacts</echo>
<echo>--------------------------------------------------</echo>
<!-- Append is needed because category info is incremental with each additional release -->
<java jar="${eclipse-equinox-launcher}" fork="true" failonerror="true" maxmemory="256m">
<arg line="-application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher" />
<arg line="-metadataRepository file:///${eclipseUpdateSubSite}" />
<arg line="-artifactRepository file:///${eclipseUpdateSubSite}" />
<arg line="-source ${eusWork}" />
<arg line="-configs ANY.ANY.ANY" />
<arg line="-publishArtifacts" />
<arg line="-compress" />
<arg line="-append" />
</java>
<echo>Augment p2 metadata with category information</echo>
<echo>---------------------------------------------</echo>
<java jar="${eclipse-equinox-launcher}" fork="true" failonerror="true" maxmemory="256m">
<arg line="-application org.eclipse.equinox.p2.publisher.CategoryPublisher" />
<arg line="-metadataRepository file:///${eclipseUpdateSubSite}" />
<arg line="-categoryDefinition file:///${basedir}/category.xml" />
<arg line="-categoryQualifier apache-uima" />
<arg line="-compress" />
</java>
<echo>
</echo>
<echo>Clearing previous checksums and signatures for eusWork plugins</echo>
<delete dir="${eusWork}">
<include name="**/*.asc" />
<include name="**/*.sha512" />
</delete>
<echo message="Generating checksums for signed plugins" />
<checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
<fileset dir="${eusWork}">
<include name="**/*.gz" />
<include name="**/*.jar" />
</fileset>
</checksum>
<echo message="Generating gpg signatures for new features and plugins" />
<apply executable="gpg" dir="${eusWork}" failonerror="true">
<arg value="--detach-sign" />
<arg value="--armor" />
<!-- batch flag needed to avoid gpg hang up -->
<arg value="--batch" />
<fileset dir="${eusWork}">
<include name="**/*.jar" />
</fileset>
</apply>
<echo message="Copying the checksums and signatures to the update subsite" />
<copy todir="${eclipseUpdateSubSite}" failonerror="true">
<fileset dir="${eusWork}">
<include name="**/*.asc" />
<include name="**/*.sha512" />
</fileset>
</copy>
<echo>
</echo>
<echo message="Clearing previous checksums and signatures for update artifacts.jar and content.jar" />
<delete dir="${eclipseUpdateSubSite}">
<include name="*.asc" />
<include name="*.sha512" />
</delete>
<echo message="Generating checksums for updated artifacts.jar and content.jar" />
<checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
<fileset dir="${eclipseUpdateSubSite}">
<include name="*.jar" />
</fileset>
</checksum>
<echo message="Generating gpg signatures for artifacts.jar and content.jar" />
<apply executable="gpg" dir="${eclipseUpdateSubSite}" failonerror="true">
<arg value="--detach-sign" />
<arg value="--armor" />
<!-- batch flag needed to avoid gpg hang up -->
<arg value="--batch" />
<fileset dir="${eclipseUpdateSubSite}">
<include name="*.jar" />
</fileset>
</apply>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- **************************************** -->
<!-- * Build Simple Project Binary Assembly * -->
<!-- **************************************** -->
<!--
This profile holds common, factored-out settings for all
projects that are packaged as single projects
(that is, not as multi-module projects), typically Sandbox projects.
It builds, in addition to the standard artifacts and attachments,
a binary artifact, which includes:
- The main generated artifact, in the lib/ dir
- dependent artifacts needed at runtime (not otherwise provided), in the lib/ dir
- Lic/Not/Readme/releaseNotes from root dir
- generated documentation in the docs/ dir
At release time the standard Apache parent builds the
- "source-release" artifact, and the
- "javadocs" artifact
Conventions:
License/Notice for Jar: uses the standard license/notice
License/Notice for bin: uses the custom files from project top level
dependencies on other artifacts:
Specified as scope runtime or compile causes these to be included in the lib dir
-->
<profile>
<id>build simple project binary assembly</id>
<activation>
<file>
<exists>marker-file-identifying-single-project</exists>
</file>
</activation>
<build>
<plugins>
<!-- ********************************************* -->
<!-- * Common Build -->
<!-- * *** FOR addons only *** -->
<!-- ********************************************* -->
<!-- * Base Jar is built, -->
<!-- * has no dependencies included -->
<!-- * has basic LICENSE/NOTICE files -->
<!-- * Base augmented dir built -->
<!-- * has Base Jar in lib/ -->
<!-- * has dependencies in lib/ -->
<!-- * has other things that go into PEAR -->
<!-- * except the pear install.xml -->
<!-- * has augmented LICENSE/NOTICE files -->
<!-- * -->
<!-- * This base is reused to make packages: -->
<!-- * PEAR - adds the install.xml -->
<!-- * - actually, the PEAR builder -->
<!-- * will redo the copies, itself -->
<!-- * OSGi - adds the OSGi manifest -->
<!-- * - removes the doc, javadocs -->
<!-- * individual zip/tar -->
<!-- * addons aggregate binary zip/tar -->
<!-- ********************************************* -->
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<!-- turn on javadoc build for each module -->
<phase>prepare-package</phase> <!-- before package, in case package needs the result -->
</execution>
</executions>
</plugin>
<!-- Build base -->
<!-- populate the lib dir with all needed dependencies
that will be distributed with this component
NOTE: TRANSITIVE DEPENDENIES ARE NOT INCLUDED
ANYTHING YOU WANT INCLUDED IN THE JAR
PLEASE LIST EXPLICITLY AND MODIFY THE LICENSE/NOTICE
APPROPRIATELY
Runs during process-resources -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<!-- Copy the dependencies to the target/base-bin/lib folder -->
<execution>
<id>copy dependencies to base-bin/lib</id>
<goals>
<goal>copy-dependencies</goal>
</goals>
<phase>process-resources</phase>
<configuration>
<outputDirectory>${project.build.directory}/base-bin/lib</outputDirectory>
<includeScope>runtime</includeScope>
<excludeTransitive>true</excludeTransitive>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<!-- add directories if they exist -->
<execution>
<id>copy standard dirs and files to base-bin</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>process-resources</phase> <!-- required -->
<configuration>
<outputDirectory>${project.build.directory}/base-bin</outputDirectory>
<resources>
<resource>
<directory>.</directory>
<includes>
<include>desc/**</include>
<include>conf/**</include>
<include>data/**</include>
<include>doc/**</include>
<include>docs/**</include>
<include>resources/**</include>
<include>bin/**</include>
<include>LICENSE*</include>
<include>NOTICE*</include>
<include>README*</include>
<include>readme*</include>
<include>RELEASE_NOTES*</include>
<include>ReleaseNotes*</include>
<include>issuesFixed/**</include>
</includes>
</resource>
<resource>
<directory>src/main/readme</directory>
</resource>
</resources>
</configuration>
</execution>
<!-- copy generated Jar to base-bin/lib spot -->
<execution>
<id>copy standard target jar to base-bin/lib</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>pre-integration-test</phase> <!-- a phase after jar -->
<configuration>
<outputDirectory>${project.build.directory}/base-bin/lib</outputDirectory>
<resources>
<resource>
<directory>${project.build.directory}</directory>
<includes>
<include>*.jar</include>
</includes>
<excludes>
<exclude>*-sources.jar</exclude>
<exclude>*-osgi.jar</exclude>
</excludes>
</resource>
</resources>
</configuration>
</execution>
<!-- copy generated docbook artifacts -->
<execution>
<id>copy generated docbook artifacts to base-bin/doc folder</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>pre-integration-test</phase> <!-- a phase after docbkx (package) phase -->
<configuration>
<outputDirectory>${project.build.directory}/base-bin/doc</outputDirectory>
<resources>
<resource>
<directory>${project.build.directory}/site/d</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>binary-release</id> <!-- is "classifier" - match maven convention -->
<goals>
<goal>single</goal>
</goals>
<phase>integration-test</phase> <!-- after first copies from jar/docbk pkg -->
<configuration>
<runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
<descriptorRefs>
<descriptorRef>
uima-single-project-bin2
</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.uima</groupId>
<artifactId>uima-build-resources</artifactId>
<version>${uimaBuildResourcesVersion}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
<!-- ********************************** -->
<!-- * Build OSGi bundle * -->
<!-- ********************************** -->
<profile>
<id>osgi-bundle</id>
<activation>
<file>
<exists>marker-file-identifying-osgi-bundle</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>5.1.6</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
<_dsannotations>*</_dsannotations>
<_metatypeannotations>*</_metatypeannotations>
</instructions>
</configuration>
<executions>
<execution>
<id>bundle-manifest</id>
<phase>process-classes</phase>
<goals>
<goal>manifest</goal>
</goals>
<configuration>
<niceManifest>true</niceManifest>
<exportScr>true</exportScr>
<scrLocation>${project.basedir}/OSGI-INF/..</scrLocation>
<manifestLocation>${project.basedir}/META-INF</manifestLocation>
<!--
- Enabling this currently seems to cause spurious exceptions in Eclipse
<supportIncrementalBuild>true</supportIncrementalBuild>
-->
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
<id>clean-manifest-and-osgiinf</id>
<configuration>
<filesets>
<fileset>
<directory>${project.basedir}/META-INF</directory>
<includes>
<include>**</include>
</includes>
</fileset>
<fileset>
<directory>${project.basedir}/OSGI-INF</directory>
<includes>
<include>**</include>
</includes>
</fileset>
</filesets>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- ********************************** -->
<!-- * Build OSGi bundle (old) * -->
<!-- ********************************** -->
<profile>
<id>build OSGi bundle for annotator</id>
<activation>
<file>
<exists>marker-file-identifying-osgi-project</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<!-- copy the base-bin dir to the osgi dir -->
<execution>
<id>Copy base-bin to osgi</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>integration-test</phase>
<configuration>
<outputDirectory>${project.build.directory}/osgi</outputDirectory>
<resources>
<resource>
<directory>${project.build.directory}/base-bin</directory>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>doc/**</exclude>
<exclude>docs/**</exclude>
<exclude>**/*-javadoc.jar</exclude>
<exclude>issuesFixed/**</exclude>
</excludes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<!-- copy any uima dependencies needed to osgi/lib
beyond what is done for the common build.
NOTE: can't just add dependencies, because
a) local projects override scope to "provided" and
b) this would result in the jars being copied for
the common build -->
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>Copy uima dependencies to osgi/lib</id>
<goals>
<goal>copy</goal>
</goals>
<phase>process-resources</phase>
<configuration>
<outputDirectory>${project.build.directory}/osgi/lib</outputDirectory>
<artifactItems>
<artifactItem>
<groupId>org.apache.uima</groupId>
<artifactId>uimaj-core</artifactId>
<version>${uimaDependencyVersion}</version>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<executions>
<execution>
<id>uima-bundle</id>
<phase>integration-test</phase>
<goals>
<goal>manifest</goal>
</goals>
<configuration>
<buildDirectory>${project.build.directory}/osgi</buildDirectory>
<manifestLocation>${project.build.directory}/osgi/META-INF</manifestLocation>
<instructions>
<Import-Package>org.apache.log.*;resolution:=optional</Import-Package>
<Embed-Dependency>*;scope=compile;</Embed-Dependency>
<Embed-Directory>lib</Embed-Directory>
<Bundle-RequiredExecutionEnvironment>J2SE-1.6</Bundle-RequiredExecutionEnvironment>
<Eclipse-ExtensibleAPI>true</Eclipse-ExtensibleAPI>
<Bundle-ClassPath>.,lib/${project.build.finalName}.jar,{maven-dependencies},lib/uimaj-core-${uimaDependencyVersion}.jar</Bundle-ClassPath>
<Include-Resource>
{maven-resources}, {maven-dependencies},
lib/uimaj-core-${uimaDependencyVersion}.jar=${settings.localRepository}/org/apache/uima/uimaj-core/${uimaDependencyVersion}/uimaj-core-${uimaDependencyVersion}.jar
</Include-Resource>
<Bundle-Version>${parsedVersion.osgiVersion}</Bundle-Version>
<Bundle-SymbolicName>${project.groupId}.${project.artifactId};singleton:=true</Bundle-SymbolicName>
</instructions>
</configuration>
</execution>
</executions>
</plugin>
<!-- Run JAR to create OSGi Jar -->
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>Create OSGi Jar</id>
<goals>
<goal>jar</goal>
</goals>
<phase>integration-test</phase> <!-- after above build step -->
<configuration>
<finalName>${project.groupId}.${project.artifactId}_${parsedVersion.osgiVersion}</finalName>
<classifier>osgi</classifier>
<classesDirectory>${project.build.directory}/osgi</classesDirectory>
<archive>
<manifestFile>${project.build.directory}/osgi/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- ********************************** -->
<!-- * Build Standard PEAR * -->
<!-- ********************************** -->
<profile>
<id>build standard PEAR</id>
<activation>
<file>
<exists>marker-file-identifying-standard-pear</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<!-- add the contents of desc if it exists to the jar.
This puts the things like the WhitespaceTokenizer.xml file into the Jar
and makes it easier for users to run this, without installing a pear.
The Tagger project uses this technique, for instance -->
<execution>
<id>copy desc so its contents can be found in Jar</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>process-resources</phase> <!-- required -->
<configuration>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
<resources>
<resource>
<directory>desc</directory>
<includes>
<include>**</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<!-- copy the base-bin dir to the pearPackaging dir -->
<execution>
<id>Copy base-bin to pearPackaging</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>integration-test</phase> <!-- after first copies from jar/docbk pkg -->
<configuration>
<outputDirectory>${project.build.directory}/pearPackaging</outputDirectory>
<resources>
<resource>
<directory>${project.build.directory}/base-bin</directory>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/*-javadoc.jar</exclude>
</excludes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<!-- turn on javadoc build for each module -->
<phase>package</phase>
</execution>
</executions>
</plugin>
<!-- build the PEAR -->
<plugin>
<groupId>org.apache.uima</groupId>
<artifactId>PearPackagingMavenPlugin</artifactId>
<extensions>true</extensions>
<executions>
<execution>
<id>build uima annnotator Pear</id>
<goals>
<goal>package</goal>
</goals>
<!-- needs to run after the jar is built
after docbooks are packaged and copied to pearPackaging/doc folder -->
<phase>integration-test</phase> <!-- after first copies from jar/docbk pkg -->
<configuration>
<datapath>$main_root/resources</datapath>
<componentId>${project.artifactId}</componentId>
<mainComponentDesc>${pearMainDescriptor}</mainComponentDesc>
</configuration>
</execution>
</executions>
</plugin>
<!-- Attach PEAR artifact after PEAR is built -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>attach-pear-artifact</id>
<phase>post-integration-test</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/${project.artifactId}.pear</file>
<type>pear</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- *********************************** -->
<!-- * Eclipse: m2e lifecycle bindings * -->
<!-- *********************************** -->
<profile>
<id>m2e</id>
<activation>
<property>
<name>m2e.version</name>
</property>
</activation>
<build>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<!-- ***************************** -->
<!-- IGNORE remote resources -->
<!-- ***************************** -->
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<versionRange>[1,)</versionRange>
<goals>
<goal>process</goal>
<goal>bundle</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<!-- ***************************** -->
<!-- EXECUTE parse-date-time -->
<!-- ***************************** -->
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.uima</groupId>
<artifactId>uima-build-helper-maven-plugin</artifactId>
<versionRange>[2,)</versionRange>
<goals>
<goal>parse-date-time</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
<!-- ******************************* -->
<!-- IGNORE dependency copy / unpack -->
<!-- ******************************* -->
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<versionRange>[2,)</versionRange>
<goals>
<goal>unpack</goal>
<goal>copy-dependencies</goal>
<goal>unpack-dependencies</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<!-- *********************************************** -->
<!-- IGNORE enforcer - to avoid warning message -->
<!-- https://issues.apache.org/jira/browse/UIMA-3053 -->
<!-- *********************************************** -->
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<versionRange>[1,)</versionRange>
<goals>
<goal>enforce</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<!-- ******************************* -->
<!-- IGNORE clearing old Manifest.MF -->
<!-- at top level, needed by -->
<!-- maven bundle plugin -->
<!-- ******************************* -->
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<versionRange>[1.6,)</versionRange>
<goals>
<goal>run</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<!-- *********************************************** -->
<!-- EXECUTE most javacc goals -->
<!-- *********************************************** -->
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>javacc-maven-plugin</artifactId>
<versionRange>[2,)</versionRange>
<goals>
<goal>javacc</goal>
<goal>jjtree-javacc</goal>
<goal>jjtree</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>javacc-maven-plugin</artifactId>
<versionRange>[2,)</versionRange>
<goals>
<goal>jjdoc</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<!-- *********************************************** -->
<!-- The Maven Dev Connector for Eclipse m2e is no -->
<!-- longer maintained. We copy the relevant part -->
<!-- of the lifecycle mapping for the -->
<!-- maven-plugin-plugin here. -->
<!-- -->
<!-- See https://github.com/ifedorenko/com.ifedorenko.m2e.mavendev/blob/master/com.ifedorenko.m2e.mavendev/lifecycle-mapping-metadata.xml -->
<!-- *********************************************** -->
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<versionRange>[3.5.2,)</versionRange>
<goals>
<goal>descriptor</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>false</runOnIncremental>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<versionRange>[3.5.2,)</versionRange>
<goals>
<goal>helpmojo</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
<!-- ********************************** -->
<!-- * Code quality: spotbugs * -->
<!-- ********************************** -->
<profile>
<id>spotbugs</id>
<build>
<plugins>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<executions>
<execution>
<id>default</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<failOnError>false</failOnError>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- ********************************** -->
<!-- * Code quality: JaCoCo * -->
<!-- ********************************** -->
<profile>
<id>jacoco</id>
<properties>
<jacoco.argLine />
<maven.surefire.argLine />
<maven.surefire.java9 />
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>@{jacoco.argLine} -Xmx@{maven.surefire.heap} -Xms@{maven.surefire.heap} @{maven.surefire.argLine} @{maven.surefire.java9}</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<propertyName>jacoco.argLine</propertyName>
</configuration>
</execution>
<execution>
<id>default-report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>default-check</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<rules />
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- ********************************** -->
<!-- * Code quality: PMD * -->
<!-- ********************************** -->
<profile>
<id>pmd</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>cpd</goal>
<goal>pmd</goal>
</goals>
</execution>
</executions>
<configuration>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<targetJdk>${maven.compiler.target}</targetJdk>
<linkXRef>false</linkXRef>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- ********************************** -->
<!-- * Backwards compatibility report * -->
<!-- ********************************** -->
<profile>
<id>enforce-compatibility</id>
<activation>
<file>
<exists>marker-file-identifying-api-compatibility-check</exists>
</file>
</activation>
<properties>
<japicmp.postAnalysisScript>${project.build.directory}/japicmp-resources/japicmp/api-report.groovy</japicmp.postAnalysisScript>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<executions>
<execution>
<id>default-cli</id>
<configuration>
<excludes combine.children="append">
<exclude>**/api-change-report/**/*.*</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>provide-japicmp-postAnalysisScript</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.apache.uima</groupId>
<artifactId>uima-build-resources</artifactId>
<version>${uimaBuildResourcesVersion}</version>
<type>jar</type>
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}/japicmp-resources/</outputDirectory>
<includes>japicmp/api-report.groovy</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<!-- https://siom79.github.io/japicmp/MavenPlugin.html -->
<plugin>
<groupId>com.github.siom79.japicmp</groupId>
<artifactId>japicmp-maven-plugin</artifactId>
<configuration>
<oldVersion>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${api_check_oldVersion}</version>
</dependency>
</oldVersion>
<parameter>
<onlyModified>true</onlyModified>
<!-- filter out classes with impl in their package or class name -->
<postAnalysisScript>${japicmp.postAnalysisScript}</postAnalysisScript>
</parameter>
</configuration>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>cmp</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- This copy is to have the api change report included in the source distribution -->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>copy-API-change-report</id>
<phase>install</phase> <!-- must follow verify -->
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
<if>
<available file="${project.build.directory}/japicmp/" />
<then>
<copy toDir="${basedir}/api-change-report">
<fileset dir="${project.build.directory}/japicmp" />
</copy>
</then>
</if>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- *********************************************** -->
<!-- * Enable Tycho * -->
<!-- *********************************************** -->
<profile>
<id>tycho</id>
<activation>
<property>
<name>!disable-tycho</name>
</property>
</activation>
<properties>
<tycho-version>2.7.4</tycho-version>
</properties>
</profile>
<!-- *********************************************** -->
<!-- * Enable Tycho during release builds * -->
<!-- *********************************************** -->
<profile>
<id>tycho-release</id>
<activation>
<property>
<name>!disable-tycho</name>
</property>
<file>
<exists>marker-file-enabling-tycho-release</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<!--
- Tycho-managed Eclipse files during release
-
- We do not need the 'org.apache.maven.plugins:maven-scm-plugin:1.9.5:checkin' goal
- here because the release plugin automatically commits twice during the 'prepare' phase
-->
<preparationGoals>
org.eclipse.tycho:tycho-versions-plugin:${tycho-version}:update-eclipse-metadata
org.apache.maven.plugins:maven-scm-plugin:1.9.5:add
</preparationGoals>
<completionGoals>
org.eclipse.tycho:tycho-versions-plugin:${tycho-version}:update-eclipse-metadata
org.apache.maven.plugins:maven-scm-plugin:1.9.5:add
</completionGoals>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<executions>
<execution>
<!--
- Tycho-managed Eclipse files during release
-->
<id>default-cli</id>
<goals>
<goal>add</goal>
<goal>checkin</goal>
</goals>
<configuration>
<includes>
*-eclipse-*/META-INF/MANIFEST.MF,
*-eclipse-*/feature.xml,
*-eclipse-*/*.product,
*-eclipse-*/category.xml
</includes>
<excludes>**/target/**</excludes>
<message>Changing the Eclipse files versions</message>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- *********************************************** -->
<!-- * Enable Tycho in a module * -->
<!-- *********************************************** -->
<profile>
<id>tycho-module</id>
<activation>
<file>
<exists>marker-file-identifying-tycho-module</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${tycho-version}</version>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<pomDependencies>consider</pomDependencies>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- *********************************************** -->
<!-- * Enable auto-staging of release artifacts * -->
<!-- * * -->
<!-- * Modules need to place their artifacts into * -->
<!-- * ${staging-local-root} * -->
<!-- *********************************************** -->
<profile>
<id>apache-release-rc-auto-staging-config</id>
<activation>
<property>
<name>!disable-rc-auto-staging</name>
</property>
</activation>
<properties>
<releaseCandidateNum />
<staging-scm-root>scm:svn:https://dist.apache.org/repos/dist/dev/uima/</staging-scm-root>
<staging-local-root>${project.build.directory}/staging</staging-local-root>
<staging-folder>${project.artifactId}-${project.version}-RC-${staging-timestamp}-${candidate-id}</staging-folder>
</properties>
</profile>
<profile>
<id>apache-release-rc-auto-staging</id>
<activation>
<property>
<name>!disable-rc-auto-staging</name>
</property>
<file>
<exists>marker-file-enabling-auto-staging</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-candidate-id</id>
<phase>initialize</phase>
<goals>
<goal>create</goal>
</goals>
<configuration>
<buildNumberPropertyName>candidate-id</buildNumberPropertyName>
<timestampPropertyName>staging-timestamp</timestampPropertyName>
<shortRevisionLength>7</shortRevisionLength>
<timestampFormat>yyyyMMddHHmm</timestampFormat>
<timezone>Z</timezone>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<executions>
<execution>
<id>checkout-staging</id>
<phase>initialize</phase>
<goals>
<goal>checkout</goal>
</goals>
<configuration>
<connectionType>developerConnection</connectionType>
<developerConnectionUrl>${staging-scm-root}</developerConnectionUrl>
<checkoutDirectory>${staging-local-root}</checkoutDirectory>
</configuration>
</execution>
<execution>
<id>add-staging-files</id>
<phase>deploy</phase>
<goals>
<goal>add</goal>
</goals>
<configuration>
<connectionType>developerConnection</connectionType>
<developerConnectionUrl>${staging-scm-root}</developerConnectionUrl>
<basedir>${staging-local-root}</basedir>
<includes>${staging-folder}/**/*</includes>
</configuration>
</execution>
<execution>
<id>commit-staging-files</id>
<phase>deploy</phase>
<goals>
<goal>checkin</goal>
</goals>
<configuration>
<connectionType>developerConnection</connectionType>
<developerConnectionUrl>${staging-scm-root}</developerConnectionUrl>
<basedir>${staging-local-root}</basedir>
<message>Staging release artifacts for ${project.artifactId}-${project.version}-RC-${staging-timestamp}-${candidate-id}</message>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>