<?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.7.0</version>
    <relativePath>..</relativePath>
  </parent>
  <artifactId>jena-shaded-guava</artifactId>
  <version>3.7.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. -->
      <version>21.0</version>
    </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>
          <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>
            </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>
