<?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.16.0</version>
    <relativePath>..</relativePath>
  </parent>
  <artifactId>jena-shaded-guava</artifactId>
  <version>3.16.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>

  <properties>
   <automatic.module.name>org.apache.jena.ext.com.google</automatic.module.name>
  </properties>

  <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>29.0-jre</version>
      <optional>true</optional>

      <!-- These are also affected by the artifactSet and filters of the shade plugin. -->
      <exclusions>
        <exclusion>
          <groupId>com.google.code.findbugs</groupId>
          <artifactId>jsr305</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker-qual</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.errorprone</groupId>
          <artifactId>error_prone_annotations</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>
      </exclusions>
    </dependency>
  </dependencies>

  <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:*</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>
            <relocation>
              <pattern>com.google</pattern>
              <shadedPattern>org.apache.jena.ext.com.google</shadedPattern>
            </relocation>
          </relocations>
        </configuration>
      </plugin>

    </plugins>
  </build>

</project>