<?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-parent</artifactId>
    <version>16-SNAPSHOT</version>
    <relativePath>../jena-parent</relativePath>
  </parent>
  <artifactId>jena-shaded-guava</artifactId>
  <version>3.1.0-SNAPSHOT</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-parent, 
           as it should only be used here, and further shadowing/bundle/NOTICE
           consideration might be needed on upgrade. -->
      <version>18.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>
