<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.bookkeeper</groupId>
    <artifactId>shaded-parent</artifactId>
    <version>4.14.0-SNAPSHOT</version>
    <relativePath>..</relativePath>
  </parent>
  <artifactId>bookkeeper-server-shaded</artifactId>
  <name>Apache BookKeeper :: Shaded :: bookkeeper-server-shaded</name>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.apache.bookkeeper</groupId>
      <artifactId>bookkeeper-server</artifactId>
      <version>${project.version}</version>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
        <exclusion>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>${maven-shade-plugin.version}</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <createDependencyReducedPom>true</createDependencyReducedPom>
              <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
              <minimizeJar>false</minimizeJar>
              <artifactSet>
                <includes>
                  <include>com.google.guava:guava</include>
                  <include>com.google.protobuf:protobuf-java</include>
                  <include>org.apache.bookkeeper:bookkeeper-common</include>
                  <include>org.apache.bookkeeper:bookkeeper-common-allocator</include>
                  <include>org.apache.bookkeeper:cpu-affinity</include>
                  <include>org.apache.bookkeeper:bookkeeper-tools-framework</include>
                  <include>org.apache.bookkeeper:bookkeeper-proto</include>
                  <include>org.apache.bookkeeper:bookkeeper-server</include>
                  <include>org.apache.bookkeeper:circe-checksum</include>
                  <include>org.apache.bookkeeper.stats:bookkeeper-stats-api</include>
                </includes>
              </artifactSet>
              <relocations>
                <relocation>
                  <pattern>com.google</pattern>
                  <shadedPattern>org.apache.bookkeeper.shaded.com.google</shadedPattern>
                </relocation>
              </relocations>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>license-maven-plugin</artifactId>
        <version>${license-maven-plugin.version}</version>
        <configuration>
          <canUpdateCopyright>false</canUpdateCopyright>
          <roots><root>${project.basedir}</root></roots>
        </configuration>
        <executions>
          <execution>
            <id>update-pom-license</id>
            <goals>
              <goal>update-file-header</goal>
            </goals>
            <phase>package</phase>
            <configuration>
              <licenseName>apache_v2</licenseName>
              <includes>
                <include>dependency-reduced-pom.xml</include>
              </includes>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <version>${maven-clean-plugin.version}</version>
        <configuration>
          <filesets>
            <fileset>
              <directory>${project.basedir}</directory>
              <includes>
                <include>dependency-reduced-pom.xml</include>
              </includes>
            </fileset>
          </filesets>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
