<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ /* ******************************************************************************
  ~  *
  ~  *
  ~  * This program and the accompanying materials are made available under the
  ~  * terms of the Apache License, Version 2.0 which is available at
  ~  * https://www.apache.org/licenses/LICENSE-2.0.
  ~  *
  ~  *  See the NOTICE file distributed with this work for additional
  ~  *  information regarding copyright ownership.
  ~  * 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.
  ~  *
  ~  * SPDX-License-Identifier: Apache-2.0
  ~  ******************************************************************************/
  -->

<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.eclipse.deeplearning4j</groupId>
        <artifactId>nd4j-shade</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <artifactId>netty-common</artifactId>

    <properties>
        <skipTestResourceEnforcement>true</skipTestResourceEnforcement>
    </properties>




    <dependencies>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-common</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <profiles>
        <profile>
            <id>custom-lifecycle</id>
            <activation>
                <property>
                    <name>!skip.custom.lifecycle</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.portals.jetspeed-2</groupId>
                        <artifactId>jetspeed-mvn-maven-plugin</artifactId>
                        <version>${jetspeed-mvn-maven-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>compile-and-pack</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>mvn</goal>
                                </goals>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.apache.maven.shared</groupId>
                                <artifactId>maven-invoker</artifactId>
                                <version>${maven-invoker-plugin.version}</version>
                            </dependency>
                        </dependencies>
                        <configuration>
                            <targets combine.children="merge">
                                <target>
                                    <id>create-shaded-jars</id>
                                    <dir>@rootdir@/nd4j/nd4j-shade/netty-common/</dir>
                                    <goals>clean,compile,package</goals>
                                    <properties>
                                        <skip.custom.lifecycle>true</skip.custom.lifecycle>
                                    </properties>
                                </target>
                            </targets>
                            <defaultTarget>create-shaded-jars</defaultTarget>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <plugins>


            <!--
            Use Maven Shade plugin to add a shaded version of the Netty dependencies, that can be imported by
            including this module (org.nd4j.jackson) as a dependency.
            The standardio.netty dependencies will be provided, though are prefixed by org.nd4j.shade.netty
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <configuration>
                    <!--
                    Important configuration options here:
                    createDependencyReducedPom: remove the shaded artifacts from the module dependencies. Without this, the
                                                original dependencies will be shaded, AND still included as transitive deps
                                                in the final POM. This is not what we want.
                    shadedArtifactAttached:     If true, the shaded artifact will be a separate JAR file for install, with
                                                the original un-shaded JAR being separate. With this being set to false,
                                                the original JAR will be modified, and no extra jar will be produced.
                    promoteTransitiveDependencies:  This will promote the transitive dependencies of the shaded dependencies
                                                to direct dependencies. Without this, we need to manually manage the transitive
                                                dependencies of the shaded artifacts.

                    Note that using <optional>true</optional> in the dependencies also allows the deps to be shaded (and
                    original dependencies to not be included), but does NOT work with promoteTransitiveDependencies
                    -->
                    <shadedArtifactAttached>false</shadedArtifactAttached>
                    <createDependencyReducedPom>true</createDependencyReducedPom>
                    <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
                    <artifactSet>
                        <includes>
                            <include>io.netty:*</include>
                            <include>io.netty.*:*</include>
                        </includes>
                        <excludes>
                            <exclude>module-info.java</exclude>
                        </excludes>
                    </artifactSet>
                    <relocations>
                        <!-- Jackson dependencies -->
                        <relocation>
                            <pattern>io.netty</pattern>
                            <shadedPattern>org.nd4j.shade.netty</shadedPattern>
                        </relocation>
                    </relocations>
                    <filters>
                        <filter>
                            <artifact>*:*</artifact>
                            <excludes>
                                <exclude>META-INF/services/javax.xml.stream.XMLOutputFactory
                                </exclude>
                                <exclude>META-INF/services/javax.xml.stream.XMLInputFactory
                                </exclude>
                                <exclude>META-INF/services/javax.xml.stream.XMLEventFactory
                                </exclude>
                            </excludes>
                        </filter>
                    </filters>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <forceCreation>true</forceCreation>
                </configuration>
                <executions>
                    <execution>
                        <id>empty-javadoc-jar</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <classifier>javadoc</classifier>
                            <classesDirectory>${basedir}/javadoc</classesDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>empty-sources-jar</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <classifier>sources</classifier>
                            <classesDirectory>${basedir}/src</classesDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
