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

  <artifactId>tika-bundle-standard</artifactId>
  <version>2.7.0</version>
  <packaging>bundle</packaging>
  <name>Apache Tika OSGi standard bundle</name>

  <description>
    OSGi bundle that contains the tika-parsers-standard 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>https://tika.apache.org/</url>
  <!-- pax doesn't yet work with junit4; checkstyle forbids junit4. -->
  <properties>
    <checkstyle.skip>true</checkstyle.skip>
  </properties>

  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>tika-core</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>tika-parsers-standard-package</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>tika-parser-html-commons</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
    </dependency>

    <!-- Test dependencies -->
    <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>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.felix</groupId>
      <artifactId>org.apache.felix.framework</artifactId>
      <version>7.0.5</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.6.1</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>
      <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>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.sun.activation</groupId>
      <artifactId>javax.activation</artifactId>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>com.sun.xml.fastinfoset</groupId>
      <artifactId>FastInfoset</artifactId>
      <version>2.1.0</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-standard-package|
              javax.activation|
              xerces|
              xercesImpl|
              commons-compress|
              xz|
              commons-codec|
              commons-csv|
              commons-io|
              commons-exec|
              commons-collections4|
              dd-plist|
              junrar|
              pdfbox|
              pdfbox-tools|
              fontbox|
              jempbox|
              xmpbox|
              bcmail-jdk15on|
              bcprov-jdk15on|
              bcpkix-jdk15on|
              bcutil-jdk15on|
              poi|
              poi-scratchpad|
              poi-ooxml|
              poi-ooxml-lite|
              log4j-core|
              log4j-api|
              commons-math3|
              curvesapi|
              xmlbeans|
              jackcess|
              jackcess-encrypt|
              commons-lang3|
              tagsoup|
              asm|
              juniversalchardet|
              vorbis-java-core|
              vorbis-java-tika|
              metadata-extractor|
              xmpcore|
              json-simple|
              boilerpipe|
              rome|
              rome-utils|
              jdom2|
              apache-mime4j-core|
              apache-mime4j-dom|
              jhighlight|
              java-libpst|
              parso|
              jmatio|
              guava|
              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.fork,
              org.apache.tika.metadata.writefilter,
              org.slf4j,
              org.slf4j.event,
              org.slf4j.helpers,
              android.util;resolution:=optional,
              colorspace;resolution:=optional,
              com.apple.eawt;resolution:=optional,
              com.beust.jcommander;resolution:=optional,
              com.github.luben.zstd;resolution:=optional,
              com.github.javaparser;resolution:=optional,
              com.github.javaparser.ast;resolution:=optional,
              com.github.javaparser.ast.body;resolution:=optional,
              com.github.javaparser.ast.expr;resolution:=optional,
              com.github.javaparser.ast.nodeTypes;resolution:=optional,
              com.github.javaparser.ast.type;resolution:=optional,
              com.github.javaparser.utils;resolution:=optional,
              com.google.common.base;resolution:=optional,
              com.google.common.math;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.microsoft.schemas.office.powerpoint;resolution:=optional,
              com.microsoft.schemas.office.word;resolution:=optional,
              com.sleepycat.je;resolution:=optional,
              com.sun.javadoc;resolution:=optional,
              com.sun.jna;resolution:=optional,
              com.sun.jna.ptr;resolution:=optional,
              com.sun.org.apache.xalan.internal;resolution:=optional,
              com.sun.org.apache.xml.internal.resolver;resolution:=optional,
              com.sun.org.apache.xml.internal.resolver.tools;resolution:=optional,
              com.sun.org.apache.xpath.internal.jaxp;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,
              de.rototor.pdfbox.graphics2d;resolution:=optional,
              icc;resolution:=optional,
              javax.annotation;resolution:=optional,
              javax.mail;resolution:=optional,
              javax.mail.internet;resolution:=optional,
              javax.net.ssl;resolution:=optional,
              javax.servlet;resolution:=optional,
              javax.servlet.annotation;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,
              javax.xml.xpath;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,
              net.sf.saxon;resolution:=optional,
              net.sf.saxon.dom;resolution:=optional,
              net.sf.saxon.lib;resolution:=optional,
              net.sf.saxon.ma.map;resolution:=optional,
              net.sf.saxon.om;resolution:=optional,
              net.sf.saxon.query;resolution:=optional,
              net.sf.saxon.sxpath;resolution:=optional,
              net.sf.saxon.trans;resolution:=optional,
              net.sf.saxon.tree.wrapper;resolution:=optional,
              net.sf.saxon.type;resolution:=optional,
              net.sf.saxon.value;resolution:=optional,
              org.apache.batik.anim.dom;resolution:=optional,
              org.apache.batik.bridge;resolution:=optional,
              org.apache.batik.dom;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.parser;resolution:=optional,
              org.apache.batik.svggen;resolution:=optional,
              org.apache.batik.util;resolution:=optional,
              org.apache.jcp.xml.dsig.internal.dom;resolution:=optional,
              org.apache.logging.log4j;resolution:=optional,
              org.apache.logging.log4j.util;resolution:=optional,
              org.apache.logging.log4j.util.internal;resolution:=optional,
              org.apache.logging.log4j.spi;resolution:=optional,
              org.apache.maven.model;resolution:=optional,
              org.apache.maven.plugin;resolution:=optional,
              org.apache.maven.plugin.logging;resolution:=optional,
              org.apache.maven.project;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.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.brotli.dec;resolution:=optional,
              org.cyberneko.html.xercesbridge;resolution:=optional,
              org.etsi.uri.x01903.v14;resolution:=optional,
              org.itadaki.bzip2;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.w3c.dom;resolution:=optional,
              org.w3c.dom.ranges;resolution:=optional,
              org.w3c.dom.svg;resolution:=optional,
              org.w3c.dom.traversal;resolution:=optional,
              org.xml.sax;resolution:=optional,
              org.xml.sax.ext;resolution:=optional,
              org.xml.sax.helpers;resolution:=optional,
              sun.io;resolution:=optional,
              sun.java2d.cmm.kcms;resolution:=optional,
              sun.misc;resolution:=optional,
              sun.nio.ch;resolution:=optional,
              sun.reflect.generics.reflectiveObjects;resolution:=optional,
              thredds.featurecollection;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>
          <classpathDependencyExcludes>
            <classpathDependencyExclude>xerces:xercesImpl</classpathDependencyExclude>
          </classpathDependencyExcludes>
        </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>

  <scm>
    <tag>2.7.0-rc1</tag>
  </scm>
</project>


