blob: d0a9958c8d41bc36237ce4d99c12d3ed735c7561 [file]
<?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.
-->
<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.tika</groupId>
<artifactId>tika-parent</artifactId>
<version>${revision}</version>
<relativePath>tika-parent/pom.xml</relativePath>
</parent>
<artifactId>tika</artifactId>
<packaging>pom</packaging>
<name>Apache Tika</name>
<url>https://tika.apache.org</url>
<modules>
<module>tika-parent</module>
<module>tika-bom</module>
<module>tika-core</module>
<module>tika-annotation-processor</module>
<module>tika-serialization</module>
<module>tika-plugins-core</module>
<module>tika-detectors</module>
<module>tika-ml</module>
<module>tika-encoding-detectors</module>
<module>tika-parsers</module>
<module>tika-bundles</module>
<module>tika-xmp</module>
<module>tika-langdetect</module>
<module>tika-pipes</module>
<module>tika-grpc</module>
<module>tika-app</module>
<module>tika-server</module>
<module>tika-integration-tests</module>
<module>tika-eval</module>
<module>tika-translate</module>
<module>tika-example</module>
<module>tika-java7</module>
<module>tika-handlers</module>
</modules>
<profiles>
<profile>
<id>e2e</id>
<modules>
<module>tika-e2e-tests</module>
</modules>
</profile>
<profile>
<id>apache-release</id>
<modules>
<module>docs</module>
</modules>
<properties>
<username>${user.name}</username>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>src</id>
<goals>
<goal>single</goal>
</goals>
<phase>package</phase>
<configuration>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
<execution>
<id>source-release-assembly</id>
<configuration>
<skipAssembly>true</skipAssembly>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>${maven.antrun.version}</version>
<!-- This dist-staging step is aggregator-only: it copies release artifacts and
CHANGES.txt relative to the reactor root's ${basedir}. tika-docs has <parent>tika</parent>,
so without inherited=false it also runs here with ${basedir}=docs/, where CHANGES.txt
and the artifacts don't exist, and the staging <fail> guards trip. Run only on root. -->
<inherited>false</inherited>
<executions>
<execution>
<goals>
<goal>run</goal>
</goals>
<phase>deploy</phase>
<configuration>
<target>
<mkdir dir="${basedir}/target/${project.version}" />
<copy todir="${basedir}/target/${project.version}" flatten="true">
<fileset dir="${basedir}">
<include name="CHANGES.txt" />
<include name="target/*-src.zip*" />
<include name="tika-parsers/tika-parsers-extended/tika-parser-scientific-package/target/tika-parser-scientific-package-${project.version}-shaded.jar*" />
<include name="tika-parsers/tika-parsers-extended/tika-parser-sqlite3-package/target/tika-parser-sqlite3-package-${project.version}-shaded.jar*" />
<include name="tika-parsers/tika-parsers-ml/tika-parser-nlp-package/target/tika-parser-nlp-package-${project.version}-shaded.jar*" />
<include name="tika-app/target/tika-app-${project.version}.zip*" />
<include name="tika-server/tika-server-standard/target/tika-server-standard-${project.version}.zip*" />
<include name="tika-eval/tika-eval-app/target/tika-eval-app-${project.version}.zip*" />
<include name="tika-pipes/tika-pipes-plugins/*/target/tika-pipes-*-${project.version}.zip*" />
</fileset>
</copy>
<!--
TIKA-4733: fail the release build if any expected dist
artifact did not land in target/${project.version}/.
Ant <copy> silently succeeds when an <include> matches
zero files, so a renamed, re-versioned, or forgotten
artifact (or a module whose assembly/shade stopped
producing output) would otherwise yield an incomplete
release candidate with no error. Each <fail> below names
the missing artifact so the gap is obvious. Keep this list
in sync with the <copy> include list above.
-->
<fail message="Release staging missing: CHANGES.txt">
<condition><not><available file="${basedir}/target/${project.version}/CHANGES.txt" /></not></condition>
</fail>
<fail message="Release staging missing: tika-${project.version}-src.zip">
<condition><not><available file="${basedir}/target/${project.version}/tika-${project.version}-src.zip" /></not></condition>
</fail>
<fail message="Release staging missing: tika-parser-scientific-package-${project.version}-shaded.jar">
<condition><not><available file="${basedir}/target/${project.version}/tika-parser-scientific-package-${project.version}-shaded.jar" /></not></condition>
</fail>
<fail message="Release staging missing: tika-parser-sqlite3-package-${project.version}-shaded.jar">
<condition><not><available file="${basedir}/target/${project.version}/tika-parser-sqlite3-package-${project.version}-shaded.jar" /></not></condition>
</fail>
<fail message="Release staging missing: tika-parser-nlp-package-${project.version}-shaded.jar">
<condition><not><available file="${basedir}/target/${project.version}/tika-parser-nlp-package-${project.version}-shaded.jar" /></not></condition>
</fail>
<fail message="Release staging missing: tika-app-${project.version}.zip">
<condition><not><available file="${basedir}/target/${project.version}/tika-app-${project.version}.zip" /></not></condition>
</fail>
<fail message="Release staging missing: tika-server-standard-${project.version}.zip">
<condition><not><available file="${basedir}/target/${project.version}/tika-server-standard-${project.version}.zip" /></not></condition>
</fail>
<fail message="Release staging missing: tika-eval-app-${project.version}.zip">
<condition><not><available file="${basedir}/target/${project.version}/tika-eval-app-${project.version}.zip" /></not></condition>
</fail>
<!--
pipes plugin zips are staged via a glob, so assert the
staged count equals the number of plugin modules that have
an assembly descriptor. This catches a single plugin whose
zip silently dropped out without hard-coding the plugin set.
-->
<resourcecount property="staged.plugin.zip.count">
<fileset dir="${basedir}/target/${project.version}" includes="tika-pipes-*-${project.version}.zip" />
</resourcecount>
<resourcecount property="source.plugin.count">
<fileset dir="${basedir}/tika-pipes/tika-pipes-plugins" includes="*/src/main/assembly/assembly.xml" />
</resourcecount>
<fail message="Release staging has ${staged.plugin.zip.count} tika-pipes plugin zip(s) but there are ${source.plugin.count} plugin module(s) with an assembly descriptor; a plugin zip was dropped from dist staging.">
<condition><not><equals arg1="${staged.plugin.zip.count}" arg2="${source.plugin.count}" /></not></condition>
</fail>
<checksum algorithm="SHA-512" fileext=".sha512">
<fileset dir="${basedir}/target/${project.version}">
<include name="*.tgz" />
<include name="*.zip" />
<include name="*.?ar" />
</fileset>
</checksum>
<checksum file="${basedir}/target/${project.version}/tika-${project.version}-src.zip" algorithm="SHA-512" property="checksum" />
<!--
TIKA-4733 follow-up: GPG-sign each staged dist artifact.
The bin zips and parser -shaded.jars are <attach>false</attach>,
so maven-gpg-plugin (which signs only ATTACHED artifacts) does not
produce their .asc; it signs the Maven-Central jars/poms and the
source-release zip only. In 3.x the server bin zip was an attached
"-bin" artifact, so it was signed (and pushed to Central) for free;
4.x detached it from Central (TIKA-4733), which also detached it from
signing. Without this step the Apache dist artifacts ship unsigned.
Uses the gpg-agent the build already primed when signing the attached
artifacts; failonerror aborts the release if a signature can't be made.
tika-<v>-src.zip is excluded; it already has its .asc from the build.
(If you sign with a non-default key, set -Dgpg.keyname and add a
matching "-u" arg here, mirroring maven-gpg-plugin.)
-->
<apply executable="gpg" failonerror="true" parallel="false">
<arg value="--batch" />
<arg value="--yes" />
<arg value="--armor" />
<arg value="--detach-sign" />
<fileset dir="${basedir}/target/${project.version}">
<include name="*.zip" />
<include name="*.tgz" />
<include name="*.jar" />
<exclude name="*-src.zip" />
<exclude name="*.asc" />
<exclude name="*.sha512" />
</fileset>
</apply>
<!--
Guard: every staged dist artifact must now carry a detached .asc.
Catches the exact failure this step exists to prevent (a silently
unsigned artifact), in the same fail-loud spirit as the guards above.
-->
<resourcecount property="dist.artifact.count">
<fileset dir="${basedir}/target/${project.version}">
<include name="*.zip" />
<include name="*.tgz" />
<include name="*.jar" />
<exclude name="*.asc" />
<exclude name="*.sha512" />
</fileset>
</resourcecount>
<resourcecount property="dist.asc.count">
<fileset dir="${basedir}/target/${project.version}" includes="*.asc" />
</resourcecount>
<fail message="Release staging has ${dist.artifact.count} dist artifact(s) but ${dist.asc.count} .asc signature(s); a dist artifact was left unsigned.">
<condition><not><equals arg1="${dist.artifact.count}" arg2="${dist.asc.count}" /></not></condition>
</fail>
<!-- this spacing is less than ideal, but if you indent here, the vote.txt file will have the leading spaces -->
<echo file="${basedir}/target/vote.txt">
From: ${username}@apache.org
To: dev@tika.apache.org
user@tika.apache.org
Subject: [VOTE] Release Apache Tika ${project.version} Candidate #N
A candidate for the Tika ${project.version} release is available at:
https://dist.apache.org/repos/dist/dev/tika/${project.version}
The release candidate is a zip archive of the sources in:
https://github.com/apache/tika/tree/{project.version}-rcN/
The SHA-512 checksum of the archive is
${checksum}.
In addition, a staged maven repository is available here:
https://repository.apache.org/content/repositories/orgapachetika-.../org/apache/tika
Please vote on releasing this package as Apache Tika ${project.version}.
The vote is open for the next 72 hours and passes if a majority of at
least three +1 Tika PMC votes are cast.
[ ] +1 Release this package as Apache Tika ${project.version}
[ ] -1 Do not release this package because...${line.separator}
</echo>
<echo />
<echo>
The release candidate has been prepared in:
${basedir}/target/${project.version}
Please deploy it to people.apache.org like this:
scp -r ${basedir}/target/${project.version} people.apache.org:public_html/tika/
A release vote template has been generated for you:
file://${basedir}/target/vote.txt
</echo>
<echo />
</target>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-nodeps</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<configuration>
<inputExcludes>
<inputExclude>CHANGES.txt</inputExclude>
<inputExclude>README.md</inputExclude>
<!-- remove this once we figure out the bundle packaging -->
<inputExclude>tika-bundle/src/main/resources/META-INF/MANIFEST.MF</inputExclude>
<inputExclude>.gitattributes</inputExclude>
<!-- Antora UI supplemental files -->
<inputExclude>docs/supplemental-ui/**</inputExclude>
<!-- UAT test fixtures (binary/markup test documents carry no license header) -->
<inputExclude>release-tools/uat/test-files/**</inputExclude>
<!-- subprojects already checked, added for RAT 0.17, see also RAT-97 -->
<inputExclude>tika-*/**</inputExclude>
</inputExcludes>
</configuration>
</plugin>
</plugins>
</build>
<description>The Apache Tika™ toolkit detects and extracts metadata and structured text content from various documents
using existing parser libraries.
</description>
<organization>
<name>The Apache Software Foundation</name>
<url>https://www.apache.org</url>
</organization>
<issueManagement>
<system>JIRA</system>
<url>https://issues.apache.org/jira/browse/TIKA</url>
</issueManagement>
<ciManagement>
<system>Jenkins</system>
<url>https://ci-builds.apache.org/job/Tika/job/tika-main-jdk8/</url>
</ciManagement>
<scm>
<tag>3.0.0-rc1</tag>
</scm>
</project>