<?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-bundles</artifactId>
    <version>2.0.0-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
  </parent>

  <artifactId>tika-bundle-classic</artifactId>
  <version>2.0.0-SNAPSHOT</version>
  <packaging>bundle</packaging>
  <name>Apache Tika OSGi classic bundle</name>

  <description>
    OSGi bundle that contains the tika-parsers-classic 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-classic-package</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>
      <exclusions>
        <exclusion>
          <groupId>org.ops4j.base</groupId>
          <artifactId>ops4j-base-store</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.ops4j.base</groupId>
          <artifactId>ops4j-base-lang</artifactId>
        </exclusion>
      </exclusions>
    </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.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.ops4j.base</groupId>
      <artifactId>ops4j-base-lang</artifactId>
      <version>1.5.1</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>

    <dependency>
      <groupId>org.glassfish.jaxb</groupId>
      <artifactId>jaxb-runtime</artifactId>
      <version>${jaxb.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.sun.activation</groupId>
      <artifactId>javax.activation</artifactId>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>com.sun.istack</groupId>
      <artifactId>istack-commons-runtime</artifactId>
      <version>3.0.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.sun.xml.fastinfoset</groupId>
      <artifactId>FastInfoset</artifactId>
      <version>1.2.16</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jaxb</groupId>
      <artifactId>txw2</artifactId>
      <version>${jaxb.version}</version>
      <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-classic-package|
              javax.activation|
              xerces|
              xercesImpl|
              commons-compress|
              xz|
              commons-codec|
              commons-csv|
              commons-io|
              commons-exec|
              commons-collections4|
              dd-plist|
              junrar|
              pdfbox|
              pdfbox-tools|
              pdfbox-debugger|
              pdfbox-preflight|
              fontbox|
              jempbox|
              bcmail-jdk15on|
              bcprov-jdk15on|
              bcpkix-jdk15on|
              poi|poi-scratchpad|
              poi-ooxml|
              poi-ooxml-schemas|
              commons-math3|
              curvesapi|
              xmlbeans|
              jackcess|
              jackcess-encrypt|
              commons-lang3|
              tagsoup|
              asm|
              juniversalchardet|
              vorbis-java-core|
              vorbis-java-tika|
              isoparser|
              metadata-extractor|
              xmpcore-shaded|
              json-simple|
              boilerpipe|
              rome|
              rome-utils|
              jdom2|
              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|
              SparseBitSet
            </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.*
            </Export-Package>
            <Import-Package>
              !org.junit,
              !org.junit.*,
              !junit.*,
              org.apache.tika.detect,
              org.apache.tika.mime,
              org.apache.tika.fork,
              org.apache.commons.io,
              android.util;resolution:=optional,
              com.adobe.xmp;resolution:=optional,
              com.adobe.xmp.impl;resolution:=optional,
              com.adobe.xmp.options;resolution:=optional,
              com.dd.plist;resolution:=optional,
              com.adobe.xmp.properties;resolution:=optional,
              com.github.luben.zstd;resolution:=optional,
              com.github.jaiimageio.*;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,
              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.saxon;resolution:=optional,
              net.sf.saxon.dom;resolution:=optional,
              net.sf.saxon.om;resolution:=optional,
              net.sf.saxon.query;resolution:=optional,
              net.sf.saxon.sxpath;resolution:=optional,
              net.sf.saxon.value;resolution:=optional,
              org.apache.batik.anim.dom;resolution:=optional,
              org.apache.batik.bridge;resolution:=optional,
              org.apache.batik.ext.awt;resolution:=optional,
              org.apache.batik.ext.awt.image.renderable;resolution:=optional,
              org.apache.batik.gvt;resolution:=optional,
              org.apache.batik.util;resolution:=optional,
              org.apache.commons.exec;resolution:=optional,
              org.apache.jcp.xml.dsig.internal.dom;resolution:=optional,
              org.apache.pdfbox.debugger;resolution:=optional,
              org.apache.pdfbox.preflight.*;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.readers;resolution:=optional,
              org.w3c.dom.ranges;resolution:=optional,
              org.w3c.dom.traversal;resolution:=optional,
              sun.io;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.jaxen;resolution:=optional,
              org.jaxen.dom4j;resolution:=optional,
              org.jaxen.pattern;resolution:=optional,
              org.jaxen.saxpath;resolution:=optional,
              org.jaxen.util;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.w3c.dom;resolution:=optional,
              org.xml.sax;resolution:=optional,
              org.xml.sax.ext;resolution:=optional,
              org.xml.sax.helpers;resolution:=optional,
              com.microsoft.schemas.office.powerpoint;resolution:=optional,
              com.microsoft.schemas.office.word;resolution:=optional,
              sun.java2d.cmm.kcms;resolution:=optional,
              sun.misc;resolution:=optional,
              com.jmatio.io;resolution:=optional,
              com.google.gson;resolution:=optional,
              com.google.gson.reflect;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,
              com.beust.jcommander;resolution:=optional,
              com.google.common.base;resolution:=optional,
              com.google.common.math;resolution:=optional,
              sun.reflect.generics.reflectiveObjects;resolution:=optional,
              org.apache.commons.logging;resolution:=optional,
              org.apache.log4j;resolution:=optional,
              *
            </Import-Package>
          </instructions>
          <createDependencyReducedPom>true</createDependencyReducedPom>
        </configuration>
      </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>
              <descriptors>
                <descriptor>test-bundles.xml</descriptor>
              </descriptors>
              <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>
          <additionalClasspathElements>
            <additionalClasspathElement>${project.build.directory}/test-bundles/jdk9plus</additionalClasspathElement>
          </additionalClasspathElements>
          <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>
            <exclude>dependency-reduced-pom.xml</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>


