<?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.19.1-SNAPSHOT</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>
    <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>6.0.0</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>
        <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|
              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.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.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.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>
        <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>2.10</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>
        <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>
