<?xml version="1.0" encoding="UTF-8"?>

<!--
  ~ /*
  ~  * ******************************************************************************
  ~  *  * Copyright (c) 2015-2019 Skymind Inc.
  ~  *  * Copyright (c) 2019 Konduit AI.
  ~  *  *
  ~  *  * 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.
  ~  *  *
  ~  *  * 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:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         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>

    <groupId>ai.konduit.serving</groupId>
    <artifactId>konduit-serving</artifactId>
    <version>0.0.2</version>
    <packaging>pom</packaging>

    <modules>
        <module>konduit-serving-common-tests</module>
        <module>konduit-serving-core</module>
        <module>konduit-serving-api</module>
        <module>konduit-serving-distro-bom</module>
        <module>konduit-serving-pipeline</module>
        <module>konduit-serving-models</module>
        <module>konduit-serving-data</module>
        <module>konduit-serving-vertx</module>
        <module>konduit-serving-vertx-protocols</module>
        <module>konduit-serving-build</module>
        <module>konduit-serving-metadata</module>
        <module>konduit-serving-cli</module>
        <module>konduit-serving-metrics</module>
        <module>konduit-serving-endpoint</module>
        <module>konduit-serving-clients</module>
        <module>konduit-serving-tensorrt</module>
        <module>konduit-serving-tensorrt-config</module>
        <module>konduit-serving-python</module>
        <module>konduit-serving-python-config</module>
        <module>konduit-serving-config-creator</module>
    </modules>

    <name>konduit-serving</name>
    <description>
        Enterprise runtime for machine learning models
    </description>
    <url>http://konduit.ai/</url>

    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <developers>
        <developer>
            <id>agibsonccc</id>
            <name>Adam Gibson</name>
        </developer>
        <developer>
            <id>ShamsUlAzeem</id>
            <name>Shams Ul Azeem</name>
        </developer>
    </developers>

    <scm>
        <connection>scm:git:git://github.com/KonduitAI/konduit-serving.git</connection>
        <developerConnection>scm:git:ssh://github.com:KonduitAI/konduit-serving.git
        </developerConnection>
        <url>https://github.com/KonduitAI/konduit-serving/tree/master</url>
    </scm>

    <properties>
        <logback.version>1.2.3</logback.version>
        <cuda.version>11.4</cuda.version>
        <cudnn.version>8.2</cudnn.version>
        <!-- Note these versions can be different  relative to the cuda version-->
        <javacpp.version>1.5.7</javacpp.version>
        <javacpp.presets.version>1.5.6</javacpp.presets.version>
        <cuda.javacpp.version>${cuda.version}-${cudnn.version}-${javacpp.presets.version}</cuda.javacpp.version>
        <additionalDependencies>ch.qos.logback:logback-classic:${logback.version}</additionalDependencies>
        <serverTypes>http,grpc</serverTypes>
        <modules>python,tensorflow,image,deeplearning4j,onnx,nd4j-tensorflow,nd4j-tensorflow</modules>
        <platforms>linux,windows,mac</platforms>
        <architectures>x86</architectures>
        <device>CUDA_${cuda.version}</device>
        <spin.version>custom</spin.version>
        <jna.platform.version>5.3.2</jna.platform.version>
        <maven-source-plugin.version>3.0.1</maven-source-plugin.version>
        <maven-javadoc-plugin.version>3.0.1</maven-javadoc-plugin.version>
        <maven-enforcer-plugin.version>3.0.0-M2</maven-enforcer-plugin.version>
        <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
        <maven-surefire-plugin.version>3.0.0-M4</maven-surefire-plugin.version>
        <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
        <maven-release-plugin.version>2.5.3</maven-release-plugin.version>
        <micrometer.version>1.7.0</micrometer.version>
        <hdr.histogram.version>2.1.12</hdr.histogram.version>
        <netty.version>4.1.48.Final</netty.version>
        <arrow.version>4.0.0</arrow.version>
        <dl4j.version>1.0.0-M2</dl4j.version>
        <datavec.version>${dl4j.version}</datavec.version>
        <nd4j.version>${dl4j.version}</nd4j.version>
        <slf4j.version>1.7.30</slf4j.version>
        <junit.version>4.13.1</junit.version>
        <jacoco-maven-plugin.version>0.8.5</jacoco-maven-plugin.version>
        <dependency-check-maven.version>5.3.2</dependency-check-maven.version>
        <modelmapper.version>2.1.1</modelmapper.version>
        <jcommander.version>1.78</jcommander.version>
        <common.dbutils.version>1.6</common.dbutils.version>
        <hsqldb.version>2.4.0</hsqldb.version>
        <maven-shade-plugin.version>2.4.3</maven-shade-plugin.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <jpmml.version>1.4.1</jpmml.version>
        <vertx-stack.version>3.9.1</vertx-stack.version>
        <lombok.version>1.18.20</lombok.version>
        <jackson.version>2.10.0</jackson.version>
        <tensorflow.version>1.15.5</tensorflow.version>
        <netty.boringssl.version>2.0.31.Final</netty.boringssl.version>
        <javacpp-presets.version>${javacpp.version}</javacpp-presets.version>
        <javacv.version>${javacpp.version}</javacv.version>
        <opencv.version>4.5.5</opencv.version>
        <cpython.version>3.10.2</cpython.version>
        <mkl.version>2022.0</mkl.version>
        <mkl.javacpp.version>${mkl.version}-${javacpp.version}</mkl.javacpp.version>
        <cpython.javacpp.version>${cpython.version}-${javacpp.version}</cpython.javacpp.version>
        <opencv.javacpp.version>${opencv.version}-${javacpp.version}</opencv.javacpp.version>
        <tensorflow.javacpp.version>${tensorflow.version}-${javacpp.version}</tensorflow.javacpp.version>
        <mkl-dnn.version>0.21.5</mkl-dnn.version>
        <mkl-dnn.javacpp.version>${mkl-dnn.version}-${javacpp.version}</mkl-dnn.javacpp.version>
        <numpy.version>1.22.2</numpy.version>
        <numpy.javacpp.version>${numpy.version}-${javacpp.version}</numpy.javacpp.version>
        <onnxruntime.version>1.10.0</onnxruntime.version>
        <onnxruntime.javacpp.version>${onnxruntime.version}-${javacpp.version}</onnxruntime.javacpp.version>
        <openblas.version>0.3.19</openblas.version>
        <openblas.javacpp.version>${openblas.version}-${javacpp.version}</openblas.javacpp.version>
        <leptonica.version>1.82.0</leptonica.version>
        <leptonica.javacpp.version>${leptonica.version}-${javacpp.version}</leptonica.javacpp.version>
        <hdf5.version>1.12.1</hdf5.version>
        <hdf5.javacpp.version>${hdf5.version}-${javacpp.version}</hdf5.javacpp.version>
        <jna.version>5.5.0</jna.version>
        <nexus-staging-maven-plugin.version>1.6.8</nexus-staging-maven-plugin.version>
        <reactive-streams.version>1.0.3</reactive-streams.version>

        <commons-lang3.version>3.6</commons-lang3.version>
        <snakeyaml.version>1.26</snakeyaml.version>
        <reflections.version>0.9.10</reflections.version>

        <oshi.version>5.2.0</oshi.version>

        <sysout-over-slf4j.version>1.0.2</sysout-over-slf4j.version>
        <guava.version>20.0</guava.version>
        <maven-git-commit-plugin.version>2.2.2</maven-git-commit-plugin.version>
        <fastutil.version>8.1.1</fastutil.version>
        <protobuf.version>3.8.0</protobuf.version>
        <error_prone_annotations.version>2.3.3</error_prone_annotations.version>
        <commons-io.version>2.7</commons-io.version>
        <commons-codec.version>1.10</commons-codec.version>
        <javaassist.version>3.27.0-GA</javaassist.version>
        <swagger-stack.version>2.1.2</swagger-stack.version>
        <io.swagger-core.version>1.6.1</io.swagger-core.version>
        <joda-time.version>2.9.9</joda-time.version>
        <jackson-coreutils.version>1.8</jackson-coreutils.version>
        <jsr305.version>3.0.2</jsr305.version>
        <httpcomponents.version>4.5.13</httpcomponents.version>
        <gson.version>2.8.5</gson.version>
        <tika.version>1.25</tika.version>
        <json-path.version>2.4.0</json-path.version>
        <maven.enforcer.skip>false</maven.enforcer.skip>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.github.oshi</groupId>
                <artifactId>oshi-core</artifactId>
                <version>${oshi.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>${gson.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${httpcomponents.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpmime</artifactId>
                <version>${httpcomponents.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>javacpp</artifactId>
                <version>${javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-ext</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.findbugs</groupId>
                <artifactId>jsr305</artifactId>
                <version>${jsr305.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.fge</groupId>
                <artifactId>jackson-coreutils</artifactId>
                <version>${jackson-coreutils.version}</version>
            </dependency>
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>${joda-time.version}</version>
            </dependency>
            <dependency>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-core</artifactId>
                <version>${io.swagger-core.version}</version>
            </dependency>
            <dependency>
                <groupId>io.swagger.core.v3</groupId>
                <artifactId>swagger-core</artifactId>
                <version>${swagger-stack.version}</version>
            </dependency>
            <dependency>
                <groupId>io.swagger.core.v3</groupId>
                <artifactId>swagger-jaxrs2</artifactId>
                <version>${swagger-stack.version}</version>
            </dependency>
            <dependency>
                <groupId>org.javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>${javaassist.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>${commons-codec.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons-io.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.errorprone</groupId>
                <artifactId>error_prone_annotations</artifactId>
                <version>${error_prone_annotations.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-java</artifactId>
                <version>${protobuf.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.code.gson</groupId>
                        <artifactId>gson</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>it.unimi.dsi</groupId>
                <artifactId>fastutil</artifactId>
                <version>${fastutil.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
            </dependency>
            <dependency>
                <groupId>net.java.dev.jna</groupId>
                <artifactId>jna</artifactId>
                <version>${jna.version}</version>
            </dependency>
            <dependency>
                <groupId>net.java.dev.jna</groupId>
                <artifactId>jna-platform</artifactId>
                <version>${jna.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons-lang3.version}</version>
            </dependency>
            <dependency>
                <groupId>org.reactivestreams</groupId>
                <artifactId>reactive-streams</artifactId>
                <version>${reactive-streams.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>openblas</artifactId>
                <version>${openblas.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>openblas-plat</artifactId>
                <version>${openblas.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>mkl</artifactId>
                <version>${mkl.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.nd4j</groupId>
                <artifactId>nd4j-arrow</artifactId>
                <version>${nd4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.nd4j</groupId>
                <artifactId>nd4j-api</artifactId>
                <version>${nd4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.arrow</groupId>
                <artifactId>arrow-format</artifactId>
                <version>${arrow.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.arrow</groupId>
                <artifactId>arrow-plasma</artifactId>
                <version>${arrow.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.arrow</groupId>
                <artifactId>arrow-vector</artifactId>
                <version>${arrow.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>io.netty</groupId>
                        <artifactId>netty-buffer</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>io.netty</groupId>
                        <artifactId>netty-common</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.google.flatbuffers</groupId>
                        <artifactId>flatbuffers-java</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.arrow</groupId>
                <artifactId>arrow-memory-unsafe</artifactId>
                <version>${arrow.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>io.netty</groupId>
                        <artifactId>netty-buffer</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>io.netty</groupId>
                        <artifactId>netty-common</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.google.flatbuffers</groupId>
                        <artifactId>flatbuffers-java</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>mkl-platform</artifactId>
                <version>${mkl.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>mkl-dnn-platform</artifactId>
                <version>${mkl-dnn.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>mkl-dnn</artifactId>
                <version>${mkl-dnn.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson.version}</version>
                <type>bundle</type>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.dataformat</groupId>
                <artifactId>jackson-dataformat-yaml</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>20190722</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>leptonica-platform</artifactId>
                <version>${leptonica.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>leptonica</artifactId>
                <version>${leptonica.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>hdf5-platform</artifactId>
                <version>${hdf5.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>hdf5</artifactId>
                <version>${hdf5.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>opencv</artifactId>
                <version>${opencv.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>opencv-platform</artifactId>
                <version>${opencv.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>javacv</artifactId>
                <version>${javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>openblas-platform</artifactId>
                <version>${openblas.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>numpy</artifactId>
                <version>${numpy.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>numpy-platform</artifactId>
                <version>${numpy.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>cpython</artifactId>
                <version>${cpython.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>cpython-platform</artifactId>
                <version>${cpython.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.datavec</groupId>
                <artifactId>datavec-spark-inference-client</artifactId>
                <version>${datavec.version}</version>
            </dependency>
            <dependency>
                <groupId>org.datavec</groupId>
                <artifactId>datavec-spark-inference-model</artifactId>
                <version>${datavec.version}</version>
            </dependency>
            <dependency>
                <groupId>org.nd4j</groupId>
                <artifactId>nd4j-jackson</artifactId>
                <version>${dl4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>tensorflow</artifactId>
                <version>${tensorflow.javacpp.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.bytedeco</groupId>
                        <artifactId>mkl-dnn</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.bytedeco</groupId>
                        <artifactId>mkl-dnn-platform</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>tensorflow-platform</artifactId>
                <version>${tensorflow.javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.nd4j</groupId>
                <artifactId>nd4j-tensorflow</artifactId>
                <version>${dl4j.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.bytedeco</groupId>
                        <artifactId>tensorflow</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.bytedeco</groupId>
                        <artifactId>tensorflow-platform</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.deeplearning4j</groupId>
                <artifactId>deeplearning4j-datavec-iterators</artifactId>
                <version>${dl4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.nd4j</groupId>
                <artifactId>jackson</artifactId>
                <version>${dl4j.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>${jacoco-maven-plugin.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.owasp</groupId>
                <artifactId>dependency-check-maven</artifactId>
                <version>${dependency-check-maven.version}</version>
            </dependency>
            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
                <version>${snakeyaml.version}</version>
            </dependency>
            <dependency>
                <groupId>io.vertx</groupId>
                <artifactId>vertx-stack-depchain</artifactId>
                <version>${vertx-stack.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.modelmapper</groupId>
                <artifactId>modelmapper</artifactId>
                <version>${modelmapper.version}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.datavec</groupId>
                <artifactId>datavec-arrow</artifactId>
                <version>${dl4j.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.fasterxml.jackson.core</groupId>
                        <artifactId>jackson-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.fasterxml.jackson.core</groupId>
                        <artifactId>jackson-annotations</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.fasterxml.jackson.dataformat</groupId>
                        <artifactId>jackson-dataformat-xml</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.fasterxml.jackson.dataformat</groupId>
                        <artifactId>jackson-dataformat-yaml</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.fasterxml.jackson.datatype</groupId>
                        <artifactId>jackson-datatype-joda</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>io.netty</groupId>
                        <artifactId>netty-buffer</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.arrow</groupId>
                        <artifactId>arrow-vector</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.arrow</groupId>
                        <artifactId>arrow-vector</artifactId>

                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.arrow</groupId>
                        <artifactId>arrow-format</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>io.netty</groupId>
                        <artifactId>netty-common</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.datavec</groupId>
                <artifactId>datavec-data-image</artifactId>
                <version>${dl4j.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.bytedeco</groupId>
                        <artifactId>javacpp</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.bytedeco</groupId>
                        <artifactId>javacv</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.bytedeco</groupId>
                        <artifactId>opencv</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.bytedeco</groupId>
                        <artifactId>opencv-platform</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.bytedeco</groupId>
                        <artifactId>hdf5-platform</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.bytedeco</groupId>
                        <artifactId>hdf5</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.vertx</groupId>
                <artifactId>vertx-unit</artifactId>
                <version>${vertx-stack.version}</version>
            </dependency>

            <!-- vertx and arrow netty clash -->
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-util</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-common</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-buffer</artifactId>
                <version>${netty.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <distributionManagement>
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
        <repository>
            <id>ossrh</id>
            <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>


    <build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.6.1</version>
            </extension>
        </extensions>

        <plugins>

            <plugin>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.6.1</version>
                <executions>
                    <execution>
                        <phase>initialize</phase>
                        <goals>
                            <goal>detect</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>license-maven-plugin</artifactId>
            <version>2.0.0</version>
            <configuration>
                <licenseName>apache_v2</licenseName>
                <licenseFile>${project.basedir}/LICENSE.txt</licenseFile>
                <projectName>${project.artifactId}</projectName>
                <inceptionYear>2020</inceptionYear>
                <organizationName>Konduit K.K.</organizationName>
                <failOnMissingHeader>true</failOnMissingHeader>
                <canUpdateCopyright>true</canUpdateCopyright>
                <includes>
                    <include>src/*/java/**/*.java</include>
                </includes>
            </configuration>
            <executions>
                <execution>
                    <id>license-check-file-header</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>check-file-header</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>${maven-enforcer-plugin.version}</version>
                <executions>
                    <execution>
                        <id>enforce-maven</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <skip>${maven.enforcer.skip}</skip>
                            <rules>
                                <requireMavenVersion>
                                    <version>[3.3,)</version>
                                </requireMavenVersion>
                                <dependencyConvergence/>
                                <banDuplicatePomDependencyVersions/>
                                <reactorModuleConvergence>
                                    <message>The reactor is not valid</message>
                                    <ignoreModuleDependencies>true</ignoreModuleDependencies>
                                </reactorModuleConvergence>
                            </rules>
                            <fail>true</fail>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>pl.project13.maven</groupId>
                    <artifactId>git-commit-id-plugin</artifactId>
                    <version>${maven-git-commit-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${maven-compiler-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${maven-surefire-plugin.version}</version>
                    <configuration>
                        <testFailureIgnore>false</testFailureIgnore>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok-maven-plugin</artifactId>
                    <version>1.18.6.0</version>
                    <executions>
                        <execution>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>delombok</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>${maven-release-plugin.version}</version>
                    <configuration>
                        <useReleaseProfile>false</useReleaseProfile>
                        <releaseProfiles>release</releaseProfiles>
                        <goals>deploy</goals>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.sonatype.plugins</groupId>
                    <artifactId>nexus-staging-maven-plugin</artifactId>
                    <version>${nexus-staging-maven-plugin.version}</version>
                    <extensions>true</extensions>
                    <configuration>
                        <serverId>ossrh</serverId>
                        <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
                        <autoReleaseAfterClose>false</autoReleaseAfterClose>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <repositories>
        <repository>
            <id>snapshots-repo</id>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>  <!-- Optional, update daily -->
            </snapshots>
        </repository>
        <repository>
            <id>gradle</id>
            <url>https://repo.gradle.org/gradle/libs-releases-local/</url>
        </repository>
    </repositories>

    <profiles>
        <profile>
            <id>aurora</id>
            <modules>
                <module>konduit-serving-aurora</module>
            </modules>
        </profile>
        <profile>
            <id>jetson-nano</id>
            <modules>
                <module>konduit-serving-gpu-nano</module>
            </modules>
        </profile>

        <profile>
            <id>test</id>
        </profile>
        <profile>
            <id>exe</id>
            <modules>
                <module>konduit-serving-exe</module>
            </modules>
        </profile>
        <profile>
            <id>deb</id>
            <modules>
                <module>konduit-serving-deb</module>
            </modules>
        </profile>
        <profile>
            <id>rpm</id>
            <modules>
                <module>konduit-serving-rpm</module>
            </modules>
        </profile>
        <profile>
            <id>uberjar</id>
            <modules>
                <module>konduit-serving-uberjar</module>
            </modules>
        </profile>
        <profile>
            <id>tar</id>
            <modules>
                <module>konduit-serving-tar</module>
            </modules>
        </profile>
        <profile>
            <id>war</id>
            <modules>
                <module>konduit-serving-war</module>
            </modules>
        </profile>
        <profile>
            <id>gpu</id>
            <activation>
                <property>
                    <name>chip</name>
                    <value>gpu</value>
                </property>
            </activation>
            <modules>
                <module>konduit-serving-gpu</module>
            </modules>
        </profile>
        <profile>
            <id>cpu</id>
            <activation>
                <property>
                    <name>chip</name>
                    <value>cpu</value>
                </property>
            </activation>
            <modules>
                <module>konduit-serving-native</module>
            </modules>
        </profile>
        <profile>
            <id>release</id>
            <properties>
                <maven.test.skip>true</maven.test.skip>
                <gpg.passphrase>${env.MAVEN_GPG_PASSPHRASE}</gpg.passphrase>
                <gpg.keyname>${env.SONATYPE_GPG_KEY}</gpg.keyname>
            </properties>

            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                    </plugin>
                </plugins>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-source-plugin</artifactId>
                            <version>${maven-source-plugin.version}</version>
                            <executions>
                                <execution>
                                    <id>attach-sources</id>
                                    <goals>
                                        <goal>jar-no-fork</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-javadoc-plugin</artifactId>
                            <version>${maven-javadoc-plugin.version}</version>
                            <executions>
                                <execution>
                                    <id>attach-javadocs</id>
                                    <goals>
                                        <goal>jar</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-gpg-plugin</artifactId>
                            <version>${maven-gpg-plugin.version}</version>
                            <configuration>
                                <gpgArguments>
                                    <arg>--pinentry-mode</arg>
                                    <arg>loopback</arg>
                                </gpgArguments>
                            </configuration>

                            <executions>
                                <execution>
                                    <id>sign-artifacts</id>
                                    <phase>verify</phase>
                                    <goals>
                                        <goal>sign</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>


        <!-- For Android: -Dplatform=android-arm -->
        <profile>
            <id>javacpp-platform-default</id>
            <activation>
                <property>
                    <name>!javacpp.platform</name>
                </property>
            </activation>
            <properties>
                <javacpp.platform>${os.name}-${os.arch}</javacpp.platform>
            </properties>
        </profile>

        <!-- Profiles to set the default javacpp.platform property: If someone knows a better way to do this, please do let me know! -->
        <profile>
            <id>linux</id>
            <activation>
                <os>
                    <name>linux</name>
                </os>
            </activation>
            <properties>
                <os.name>linux</os.name>
            </properties>
        </profile>
        <profile>
            <id>macosx</id>
            <activation>
                <os>
                    <name>mac os x</name>
                </os>
            </activation>
            <properties>
                <os.name>macosx</os.name>
            </properties>
        </profile>
        <profile>
            <id>windows</id>
            <activation>
                <os>
                    <family>windows</family>
                </os>
            </activation>
            <properties>
                <os.name>windows</os.name>
            </properties>
        </profile>
        <profile>
            <id>i386</id>
            <activation>
                <os>
                    <arch>i386</arch>
                </os>
            </activation>
            <properties>
                <os.arch>x86_64</os.arch>
            </properties>
        </profile>
        <profile>
            <id>i486</id>
            <activation>
                <os>
                    <arch>i486</arch>
                </os>
            </activation>
            <properties>
                <os.arch>x86_64</os.arch>
            </properties>
        </profile>
        <profile>
            <id>i586</id>
            <activation>
                <os>
                    <arch>i586</arch>
                </os>
            </activation>
            <properties>
                <os.arch>x86_64</os.arch>
            </properties>
        </profile>
        <profile>
            <id>i686</id>
            <activation>
                <os>
                    <arch>i686</arch>
                </os>
            </activation>
            <properties>
                <os.arch>x86_64</os.arch>
            </properties>
        </profile>
        <profile>
            <id>x86</id>
            <activation>
                <os>
                    <arch>x86</arch>
                </os>
            </activation>
            <properties>
                <os.arch>x86_64</os.arch>
            </properties>
        </profile>
        <profile>
            <id>amd64</id>
            <activation>
                <os>
                    <arch>amd64</arch>
                </os>
            </activation>
            <properties>
                <os.arch>x86_64</os.arch>
            </properties>
        </profile>
        <profile>
            <id>x86-64</id>
            <activation>
                <os>
                    <arch>x86-64</arch>
                </os>
            </activation>
            <properties>
                <os.arch>x86_64</os.arch>
            </properties>
        </profile>
        <profile>
            <id>arm</id>
            <activation>
                <os>
                    <arch>arm</arch>
                </os>
            </activation>
            <properties>
                <os.arch>arm</os.arch>
            </properties>
        </profile>

        <profile>
            <id>securitycheck</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.owasp</groupId>
                        <artifactId>dependency-check-maven</artifactId>
                        <version>${dependency-check-maven.version}</version>
                        <executions>
                            <execution>
                                <id>securitycheck</id>
                                <goals>
                                    <goal>aggregate</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <format>XML</format>
                            <assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled>
                            <nugetconfAnalyzerEnabled>false</nugetconfAnalyzerEnabled>
                            <skipProvidedScope>true</skipProvidedScope>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>codecoverage</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <version>${jacoco-maven-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>prepare-agent</id>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>codecoverage-report</id>
                                <phase>test</phase>
                                <goals>
                                    <goal>report-aggregate</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
