<?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>jena</artifactId>
    <version>3.10.0</version>
    <relativePath>..</relativePath>
  </parent>
  <artifactId>jena-shaded-guava</artifactId>
  <version>3.10.0</version>
  <name>Apache Jena - Shadowed external libraries</name>

  <description>
    This module shades Google's Guava.
    Direct use can lead to versioning problems 
    as some systems are dependent on specific
    versions of guava. 
    This module uses the Shade plugin to 
    re-package them under the package name
    org.apache.jena.ext.com.google....
  </description>

  <dependencies>

    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <!-- Version number specified explicitly and not in jena-project, 
           as it should only be used here, and further shadowing/bundle/NOTICE
           consideration might be needed on upgrade. 
           The shading step takes only the com.google.commons/com.google.thirdparty
           This is important because Guava itself (at v24 at least) has tools dependencies
           with various licenses.
      -->
      <version>24.1-jre</version>
      <optional>true</optional>
      <!-- These make the excluded parts clean for dependency:tree in the module directory -->
      <exclusions>
        <exclusion>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker-qual</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker-compat-qual</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.errorprone</groupId>
          <artifactId>error_prone_annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.j2objc</groupId>
          <artifactId>j2objc-annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.code.findbugs</groupId>
          <artifactId>jsr305</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>animal-sniffer-annotations</artifactId>
        </exclusion>
      </exclusions>

    </dependency>

  </dependencies>
  <properties>
   <automatic.module.name>org.apache.jena.ext.com.google</automatic.module.name>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <transformers>
            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
              <manifestEntries>
                <Automatic-Module-Name>${automatic.module.name}</Automatic-Module-Name>
              </manifestEntries>
            </transformer>
          </transformers>
          <createSourcesJar>true</createSourcesJar>
          <artifactSet>
            <includes>
              <artifact>com.google.guava:guava</artifact>
            </includes>
          </artifactSet>

          <filters>
            <filter>
              <!-- Modify the below patterns if a later guava 
                   contains other packages 
              -->
              <artifact>com.google.guava:guava</artifact>
              <includes>
                <include>com/google/common/**</include>
                <include>com/google/thirdparty/**</include>
              </includes>
              <excludes>
                <exclude>META-INF/maven/**</exclude>
              </excludes>
            </filter>
          </filters>

          <!-- 
               Shade to a different package, so the JAR we produce will not be
               in conflict with any newer/older guava present in client code
               depending on Jena.
          -->
          <relocations>
            <!-- Modify the below patterns if a later guava contains other
                 packages -->
            <relocation>
              <pattern>com.google.common</pattern>
              <shadedPattern>org.apache.jena.ext.com.google.common</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.google.thirdparty</pattern>
              <shadedPattern>org.apache.jena.ext.com.google.thirdparty</shadedPattern>
            </relocation>
          </relocations>
        </configuration>
      </plugin>

    </plugins>
  </build>

</project>