<?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.jena</groupId>
    <artifactId>apache-jena-osgi</artifactId>
    <version>3.7.0</version>
  </parent>
  <artifactId>jena-osgi</artifactId>  
  <packaging>bundle</packaging>
  <name>Apache Jena - OSGi bundle</name>
  <description>
    Embedding the main Jena modules (iri/core/arq/tdb) in a single OSGi bundle.
  </description>
  
  <!--
       Most of the job is done by maven-bundle-plugin (see below).
       It inspects the embedded/shadowed class files from jena-* to
       generate the correct Import/Export-Package statements.


       SCOPES:

       <scope>provided</scope> are explicitly picked up 
       by maven-bundle-plugin below to be shadowed within the bundle.  These
       are the non-OSGi bundles we want to package, e.g. Jena 
       and any dependencies that are not easily available as
       bundles..

       Those without <scope> (e.g. compile) below are already
       OSGi bundles and will become runtime dependencies of
       the jena-osgi bundle when used through Maven. Their
       transitive dependencies (e.g. jsonld-java depends on 
       jackson-core) are not explicitly listed here.

       Note that many OSGi users don't use Maven
       and would have to find those dependencies
       themselves. See ../jena-osgi-test/ for
       example.


       To avoid duplicates of non-bundle and bundle dependencies,
       e.g. httpcore vs. httpcore-osgi, there are several
       <excludes> below - as not everyone 
       follows the <scope>provided</scope> pattern.

       Use mvn dependency:tree to inspect what dependencies are
       exposed in the end, and unzip -t target/*.jar to inspect
       what becomes bundled in the bundle.

       Explore META-INF/MANFEST.MF in the jar to see what
       Import and Export the maven-bundle-plugin has figured out,
       usually the details figured out through code 
       introspections are correct - if verbose.

       -->
  <dependencies>
    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-arq</artifactId>
      <version>3.7.0</version>
      <scope>provided</scope>
      <exclusions>
        <!-- These are all embedded within httpclient-osgi -->
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
        </exclusion>
        <exclusion>
          <groupId>commons-codec</groupId>
          <artifactId>commons-codec</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpmime</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient-cache</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>fluent-hc</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    
    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-core</artifactId>
      <version>3.7.0</version>
      <scope>provided</scope>
    </dependency>
    
    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-rdfconnection</artifactId>
      <version>3.7.0</version>
      <scope>provided</scope>
    </dependency>
   <!-- xerces is needed - but this is marked as optional as some
        OSGi frameworks like Karaf will include their own
        xerces in their boot delegation.

        See also pull request #134
        https://github.com/apache/jena/pull/134#issuecomment-209474708
   -->
    <dependency>
        <groupId>org.apache.servicemix.bundles</groupId>
        <artifactId>org.apache.servicemix.bundles.xerces</artifactId>
        <version>2.11.0_1</version>
        <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-shaded-guava</artifactId>
      <version>3.7.0</version>
      <scope>provided</scope>
    </dependency>
    
    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-tdb</artifactId>
      <version>3.7.0</version>
      <scope>provided</scope>
    </dependency>
    <!--
    NOTE: Also update 
    src/main/resources/META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle
    to the concatenation of the different Jena modules' JenaSubsystemLifecycle
    (order does not matter). See JENA-1139 for details.
    -->

    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-iri</artifactId>
      <version>3.7.0</version>
      <scope>provided</scope>
    </dependency>

    <!-- OSGi versions of Jena dependencies -->
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient-osgi</artifactId>
      <version>${ver.httpclient-osgi}</version>
      <exclusions>
        <!-- These are all embedded within httpclient-osgi -->
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
        </exclusion>
        <exclusion>
          <groupId>commons-codec</groupId>
          <artifactId>commons-codec</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpmime</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient-cache</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>fluent-hc</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore-osgi</artifactId>
      <version>${ver.httpcore-osgi}</version> 
      <exclusions>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpcore</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpcore-nio</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>com.github.jsonld-java</groupId>
      <artifactId>jsonld-java</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-csv</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.thrift</groupId>
      <artifactId>libthrift</artifactId>
      <exclusions>
        <!-- Use httpclient-osgi instead -->
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpcore</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${ver.slf4j}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.core</artifactId>
      <version>5.0.0</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <!-- re-enable extensions here for older Mavens -->
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Export-Package>org.apache.jena.*,!org.apache.jena.ext.*</Export-Package>            
            <Embed-Dependency>artifactId=jena*;inline=true</Embed-Dependency>
            <!--            
            <Embed-Dependency>artifactId=jena*;inline=true,artifactId=xercesImpl;inline=true,artifactId=xml-apis;inline=true</Embed-Dependency>
            -->
            <Embed-Transitive>true</Embed-Transitive>
            <!-- Do not embed but import Xerces classes via OSGi -->
            <Import-Package>org.osgi.framework.*,org.apache.xml.*,org.apache.xerces.*;version="2.11.0",!sun.io,!org.apache.avalon.framework.logger,!com.ibm.uvm.tools,!com.sun.jdmk.comm,!org.apache.log,!org.apache.jena.ext.*,sun.misc;resolution:=optional,com.google.errorprone.annotations.concurrent;resolution:=optional,*</Import-Package>
            <!--
            <Import-Package>org.osgi.framework.*,!sun.io,!org.apache.avalon.framework.logger,!com.ibm.uvm.tools,!com.sun.jdmk.comm,!org.apache.log,!org.apache.xml.*,!org.apache.xerces.*,!org.apache.jena.ext.*,sun.misc;resolution:=optional,*</Import-Package>
            -->
            <Private-Package>org.apache.jena.ext.*</Private-Package>
            <Bundle-Activator>org.apache.jena.osgi.Activator</Bundle-Activator>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
