<?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 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-parent</artifactId>
    <version>1.22</version>
    <relativePath>../tika-parent/pom.xml</relativePath>
  </parent>

  <artifactId>tika-bundle</artifactId>
  <packaging>bundle</packaging>
  <name>Apache Tika OSGi bundle</name>
  <description>
    OSGi bundle that contains the tika-parsers component and all its
    upstream dependencies that aren't OSGI bundles by themselves. This
    bundle exports no packages, only the Parser and Detector services
    from the tika-parsers component.
  </description>
  <url>http://tika.apache.org/</url>

  <properties>
    <!-- some conflict with slf4j with 4.12.0
        causes failure in testForkParser -->
    <pax.exam.version>4.11.0</pax.exam.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>tika-core</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>tika-parsers</artifactId>
      <version>${project.version}</version>
    </dependency>

    <!-- Test dependencies -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.ops4j.pax.exam</groupId>
      <artifactId>pax-exam-junit4</artifactId>
      <version>${pax.exam.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.ops4j.pax.exam</groupId>
      <artifactId>pax-exam-container-native</artifactId>
      <version>${pax.exam.version}</version>
      <exclusions>
        <exclusion>
          <groupId>org.ops4j.base</groupId>
          <artifactId>ops4j-base-util-property</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.ops4j.base</groupId>
          <artifactId>ops4j-base-lang</artifactId>
        </exclusion>
      </exclusions>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.ops4j.base</groupId>
      <artifactId>ops4j-base-util-property</artifactId>
      <version>1.5.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.ops4j.base</groupId>
      <artifactId>ops4j-base-lang</artifactId>
      <version>1.5.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.felix</groupId>
      <artifactId>org.apache.felix.framework</artifactId>
      <version>5.6.10</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.ops4j.pax.exam</groupId>
      <artifactId>pax-exam-link-assembly</artifactId>
      <version>${pax.exam.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.ops4j.pax.url</groupId>
      <artifactId>pax-url-aether</artifactId>
      <version>2.5.4</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.inject</groupId>
      <artifactId>javax.inject</artifactId>
      <version>1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.core</artifactId>
      <version>${osgi.core.version}</version>
      <scope>test</scope>
    </dependency>

    <!-- use non-log4j slf4j backend to prevent main classloader from loading log4j classes -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>${maven.bundle.version}</version>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <_runsystempackages>com.sun.xml.bind.marshaller, com.sun.xml.internal.bind.marshaller</_runsystempackages>
            <!--  The file below and the _include entry may be removed once Tika targets OpenJDK 9.0 or above -->
            <_include>src/main/resources/META-INF/MANIFEST.MF</_include>
            <Bundle-Activator>
              org.apache.tika.parser.internal.Activator
            </Bundle-Activator>
            <Embed-Dependency>*;scope=compile;artifactId=tika-parsers|
              commons-compress|
              xz|
              commons-codec|
              commons-csv|
              commons-io|
              commons-exec|
              commons-collections4|
              junrar|
              pdfbox|
              pdfbox-tools|
              pdfbox-debugger|
              fontbox|
              jempbox|
              bcmail-jdk15on|
              bcprov-jdk15on|
              bcpkix-jdk15on|
              poi|poi-scratchpad|
              poi-ooxml|
              poi-ooxml-schemas|
              curvesapi|
              xmlbeans|
              jackcess|
              jackcess-encrypt|
              commons-lang|
              commons-lang3|
              tagsoup|
              asm|
              juniversalchardet|
              vorbis-java-core|
              vorbis-java-tika|
              isoparser|
              metadata-extractor|
              xmpcore|
              json-simple|
              boilerpipe|
              rome|
              rome-utils|
              sentiment-analysis-parser|
              opennlp-tools|
              geoapi|
              sis-metadata|
              sis-netcdf|
              sis-utility|
              sis-storage|
              unit-api|
              apache-mime4j-core|
              apache-mime4j-dom|
              jhighlight|
              java-libpst|
              netcdf4|
              grib|
              cdm|
              parso|
              httpservices|
              jcip-annotations|
              jmatio|
              guava|
              age-predictor-api</Embed-Dependency>
            <Embed-Transitive>true</Embed-Transitive>
            <Bundle-DocURL>${project.url}</Bundle-DocURL>
            <Export-Package>
              !org.apache.tika.parser,
              !org.apache.tika.parser.external,
              org.apache.tika.parser.*,
	      org.apache.tika.metadata.serialization.*,
            </Export-Package>
            <Import-Package>
              !org.junit,
              !org.junit.*,
              !junit.*,
              !org.apache.ctakes.*,
              !org.apache.uima.*,
	      !org.apache.solr.client.solrj.*,
	      !org.apache.solr.common.*,
	      !org.apache.spark.api.java.*,
	      !org.apache.spark.ml.*,
	      !org.apache.spark.mllib.*,
	      !org.apache.spark.sql.*,
	          org.apache.tika.mime,
              org.apache.tika.fork,
              android.util;resolution:=optional,
              com.adobe.xmp;resolution:=optional,
              com.adobe.xmp.properties;resolution:=optional,
              com.github.luben.zstd;resolution:=optional,
              com.github.openjson;resolution:=optional,
              com.google.common.util.concurrent.internal;resolution:=optional,
              com.google.errorprone.annotations;resolution:=optional,
              com.google.errorprone.annotations.concurrent;resolution:=optional,
              com.google.protobuf;resolution:=optional,
              com.ibm.icu.text;resolution:=optional,
              com.parso;resolution:=optional,
              com.sleepycat.je;resolution:=optional,
              com.sun.javadoc;resolution:=optional,
              com.sun.xml.bind.marshaller;resolution:=optional,
              com.sun.xml.internal.bind.marshaller;resolution:=optional,
              com.sun.msv.datatype;resolution:=optional,
              com.sun.msv.datatype.xsd;resolution:=optional,
              com.sun.tools.javadoc;resolution:=optional,
              edu.wisc.ssec.mcidas;resolution:=optional,
              edu.wisc.ssec.mcidas.adde;resolution:=optional,
	          edu.usc.irds.agepredictor.spark.authorage;resolution:=optional,
              javax.activation;resolution:=optional,
              javax.annotation;resolution:=optional,
              javax.mail;resolution:=optional,
              javax.mail.internet;resolution:=optional,
              javax.net.ssl;resolution:=optional,
              javax.servlet.annotation;resolution:=optional,
              javax.servlet;resolution:=optional,
              javax.servlet.http;resolution:=optional,
              javax.measure.converter;resolution:=optional,
              javax.ws.rs.core;resolution:=optional,
              javax.xml.bind;resolution:=optional,
              javax.xml.bind.annotation;resolution:=optional,
              javax.xml.bind.annotation.adapters;resolution:=optional,
              javax.xml.bind.attachment;resolution:=optional,
              javax.xml.bind.helpers;resolution:=optional,
              javax.xml.bind.util;resolution:=optional,
              net.sf.ehcache;resolution:=optional,
              nu.xom;resolution:=optional,
              opendap.dap.http;resolution:=optional,
              opendap.dap;resolution:=optional,
              opendap.dap.parser;resolution:=optional,
              opennlp.maxent;resolution:=optional,
              opennlp.tools.namefind;resolution:=optional,
	          opennlp.tools.authorage;resolution:=optional,
              net.didion.jwnl;resolution:=optional,
              org.apache.cxf.jaxrs.client;resolution:=optional,
              org.apache.cxf.jaxrs.ext.multipart;resolution:=optional,
              org.apache.commons.exec;resolution:=optional,
              org.apache.commons.io;resolution:=optional,
              org.apache.commons.httpclient;resolution:=optional,
              org.apache.commons.httpclient.auth;resolution:=optional,
              org.apache.commons.httpclient.methods;resolution:=optional,
              org.apache.commons.httpclient.params;resolution:=optional,
              org.apache.commons.httpclient.protocol;resolution:=optional,
              org.apache.commons.httpclient.util;resolution:=optional,

              org.apache.commons.math3.exception;resolution:=optional,
              org.apache.commons.math3.linear;resolution:=optional,
              org.apache.commons.math3.stat.regression;resolution:=optional,
              org.apache.commons.vfs2;resolution:=optional,
              org.apache.commons.vfs2.provider;resolution:=optional,
              org.apache.commons.vfs2.util;resolution:=optional,
              org.apache.crimson.jaxp;resolution:=optional,
              org.apache.jcp.xml.dsig.internal.dom;resolution:=optional,
              org.apache.pdfbox.debugger;resolution:=optional,
              org.apache.sis;resolution:=optional,
              org.apache.sis.distance;resolution:=optional,
              org.apache.sis.feature;resolution:=optional,
              org.apache.sis.geometry;resolution:=optional,
              org.apache.sis.internal.feature;resolution:=optional,
              org.apache.sis.internal.referencing;resolution:=optional,
              org.apache.sis.parameter;resolution:=optional,
              org.apache.sis.referencing;resolution:=optional,
              org.apache.tools.ant;resolution:=optional,
              org.apache.tools.ant.taskdefs;resolution:=optional,
              org.apache.tools.ant.types;resolution:=optional,
              org.apache.xerces.parsers;resolution:=optional,
              org.apache.xerces.util;resolution:=optional,
              org.apache.xerces.xni;resolution:=optional,
              org.apache.xerces.xni.parser;resolution:=optional,
              org.apache.xml.resolver;resolution:=optional,
              org.apache.xml.resolver.tools;resolution:=optional,
              org.apache.xml.security;resolution:=optional,
              org.apache.xml.security.c14n;resolution:=optional,
              org.apache.xml.security.signature;resolution:=optional,
              org.apache.xml.security.utils;resolution:=optional,
              org.apache.xmlbeans.impl.xpath.saxon;resolution:=optional,
              org.apache.xmlbeans.impl.xquery.saxon;resolution:=optional,
              org.bouncycastle.cert;resolution:=optional,
              org.bouncycastle.cert.jcajce;resolution:=optional,
              org.bouncycastle.cert.ocsp;resolution:=optional,
              org.bouncycastle.cms.bc;resolution:=optional,
              org.bouncycastle.operator;resolution:=optional,
              org.bouncycastle.operator.bc;resolution:=optional,
              org.bouncycastle.tsp;resolution:=optional,
              org.brotli.dec;resolution:=optional,
              org.checkerframework.checker.nullness.qual;resolution:=optional,
              org.cyberneko.html.xercesbridge;resolution:=optional,
              org.etsi.uri.x01903.v14;resolution:=optional,
              org.ibex.nestedvm;resolution:=optional,
              org.gjt.xpp;resolution:=optional,
              org.jaxen;resolution:=optional,
              org.jaxen.dom4j;resolution:=optional,
              org.jaxen.pattern;resolution:=optional,
              org.jaxen.saxpath;resolution:=optional,
              org.jdom;resolution:=optional,
              org.jdom.input;resolution:=optional,
              org.jdom.output;resolution:=optional,
              org.jdom2;resolution:=optional,
              org.jdom2.input;resolution:=optional,
              org.jdom2.input.sax;resolution:=optional,
              org.jdom2.output;resolution:=optional,
              org.jdom2.filter;resolution:=optional,
              org.json.simple;resolution:=optional,
              org.openxmlformats.schemas.officeDocument.x2006.math;resolution:=optional,
              org.openxmlformats.schemas.schemaLibrary.x2006.main;resolution:=optional,
              org.osgi.framework;resolution:=optional,
              org.quartz;resolution:=optional,
              org.quartz.impl;resolution:=optional,
              org.slf4j;resolution:=optional,
              org.slf4j.helpers;resolution:=optional,
              org.sqlite;resolution:=optional,
              org.w3c.dom;resolution:=optional,
              org.relaxng.datatype;resolution:=optional,
              org.xml.sax;resolution:=optional,
              org.xml.sax.ext;resolution:=optional,
              org.xml.sax.helpers;resolution:=optional,
              org.xmlpull.v1;resolution:=optional,
              com.microsoft.schemas.office.powerpoint;resolution:=optional,
              com.microsoft.schemas.office.word;resolution:=optional,
              sun.misc;resolution:=optional,
              ucar.units;resolution:=optional,
              ucar.httpservices;resolution:=optional,
              ucar.nc2.util;resolution:=optional,
              ucar.nc2.util.cache;resolution:=optional,
              ucar.nc2.dataset;resolution:=optional,
              ucar.nc2;resolution:=optional,
              ucar.nc2.constants;resolution:=optional,
              ucar.nc2.dt;resolution:=optional,
              ucar.nc2.dt.grid;resolution:=optional,
              ucar.nc2.ft;resolution:=optional,
              ucar.nc2.iosp;resolution:=optional,
              ucar.nc2.iosp.hdf4;resolution:=optional,
              ucar.nc2.ncml;resolution:=optional,
              ucar.nc2.stream;resolution:=optional,
              ucar.nc2.time;resolution:=optional,
              ucar.nc2.units;resolution:=optional,
              ucar.nc2.wmo;resolution:=optional,
              ucar.nc2.write;resolution:=optional,
              ucar.ma2;resolution:=optional,
              ucar.grib;resolution:=optional,
              ucar.grib.grib1;resolution:=optional,
              ucar.grib.grib2;resolution:=optional,
              ucar.grid;resolution:=optional,
              ucar.unidata.geoloc;resolution:=optional,
              ucar.unidata.geoloc.projection;resolution:=optional,
              ucar.unidata.geoloc.projection.proj4;resolution:=optional,
              ucar.unidata.geoloc.projection.sat;resolution:=optional,
              ucar.unidata.io;resolution:=optional,
              ucar.unidata.util;resolution:=optional,
              com.jmatio.io;resolution:=optional,
              com.google.gson;resolution:=optional,
	          com.google.gson.reflect;resolution:=optional,
              visad;resolution:=optional,
              visad.data;resolution:=optional,
              visad.data.vis5d;resolution:=optional,
              visad.jmet;resolution:=optional,
              visad.util;resolution:=optional,
              colorspace;resolution:=optional,
              com.sun.jna;resolution:=optional,
              com.sun.jna.ptr;resolution:=optional,
              icc;resolution:=optional,
              jj2000.j2k.codestream;resolution:=optional,
              jj2000.j2k.codestream.reader;resolution:=optional,
              jj2000.j2k.decoder;resolution:=optional,
              jj2000.j2k.entropy.decoder;resolution:=optional,
              jj2000.j2k.fileformat.reader;resolution:=optional,
              jj2000.j2k.image;resolution:=optional,
              jj2000.j2k.image.invcomptransf;resolution:=optional,
              jj2000.j2k.image.output;resolution:=optional,
              jj2000.j2k.io;resolution:=optional,
              jj2000.j2k.quantization.dequantizer;resolution:=optional,
              jj2000.j2k.roi;resolution:=optional,
              jj2000.j2k.util;resolution:=optional,
              jj2000.j2k.wavelet.synthesis;resolution:=optional,
              org.itadaki.bzip2;resolution:=optional,
              org.jsoup;resolution:=optional,
              org.jsoup.nodes;resolution:=optional,
              org.jsoup.select;resolution:=optional,
              thredds.featurecollection;resolution:=optional,
              thredds.filesystem;resolution:=optional,
              thredds.inventory;resolution:=optional,
              thredds.inventory.filter;resolution:=optional,
              thredds.inventory.partition;resolution:=optional,
              com.beust.jcommander;resolution:=optional,
              com.google.common.base;resolution:=optional,
              com.google.common.math;resolution:=optional,
              org.apache.http;resolution:=optional,
              org.apache.http.client.utils;resolution:=optional,
              org.joda.time;resolution:=optional,
              org.joda.time.chrono;resolution:=optional,
              org.joda.time.field;resolution:=optional,
              org.joda.time.format;resolution:=optional,
              sun.reflect.generics.reflectiveObjects;resolution:=optional,
              org.apache.http.auth;resolution:=optional,
              org.apache.http.client;resolution:=optional,
              org.apache.http.client.entity;resolution:=optional,
              org.apache.http.client.methods;resolution:=optional,
              org.apache.http.conn;resolution:=optional,
              org.apache.http.conn.scheme;resolution:=optional,
              org.apache.http.cookie;resolution:=optional,
              org.apache.http.entity;resolution:=optional,
              org.apache.http.impl.client;resolution:=optional,
              org.apache.http.impl.conn;resolution:=optional,
              org.apache.http.message;resolution:=optional,
              org.apache.http.params;resolution:=optional,
              org.apache.http.protocol;resolution:=optional,
              org.apache.http.util;resolution:=optional,
              org.apache.commons.logging;resolution:=optional,
              org.apache.log4j;resolution:=optional,
              *
            </Import-Package>
          </instructions>
        </configuration>
      </plugin>
      <!-- TIKA-763: Workaround to avoid including LGPL classes -->
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <phase>prepare-package</phase>
            <goals>
              <goal>unpack-dependencies</goal>
            </goals>
            <configuration>
              <includeArtifactIds>netcdf</includeArtifactIds>
              <excludes>
                ucar/nc2/iosp/fysat/Fysat*.class,
                ucar/nc2/dataset/transform/VOceanSG1*class,
                ucar/unidata/geoloc/vertical/OceanSG*.class,
                META-INF/**,CHANGES,README
              </excludes>
              <outputDirectory>
                ${project.build.directory}/classes
              </outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- The Tika Bundle has no java code of its own, so no need to do -->
      <!--  any forbidden API checking against it (it gets confused...) -->
      <plugin>
        <groupId>de.thetaphi</groupId>
        <artifactId>forbiddenapis</artifactId>
        <version>${forbiddenapis.version}</version>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <descriptor>test-bundles.xml</descriptor>
              <finalName>test</finalName>
              <attach>false</attach>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>${maven.failsafe.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <systemPropertyVariables>
            <org.ops4j.pax.logging.DefaultServiceLog.level>
              INFO
            </org.ops4j.pax.logging.DefaultServiceLog.level>
          </systemPropertyVariables>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <version>${rat.version}</version>
        <configuration>
          <excludes>
            <exclude>src/main/resources/META-INF/MANIFEST.MF</exclude>
          </excludes>
        </configuration>
      </plugin>

    </plugins>
  </build>

  <organization>
    <name>The Apache Software Founation</name>
    <url>http://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://builds.apache.org/job/Tika-trunk/</url>
  </ciManagement>
</project>
