deeplearning4j/deeplearning4j

View on GitHub
pom.xml

Summary

Maintainability
Test Coverage
<?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>

    <groupId>org.deeplearning4j</groupId>
    <artifactId>deeplearning4j</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>deeplearning4j</name>
    <description>Deeplearning4j Monorepo</description>
    <url>http://deeplearning4j.konduit.ai/</url>



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

    <developers>
        <developer>
            <organization>Eclipse Foundation</organization>
            <url>https://github.com/deeplearning4j/deeplearning4j</url>
            <organizationUrl>https://eclipse.org/</organizationUrl>
        </developer>
    </developers>

    <modules>
        <module>libnd4j</module>
        <module>nd4j</module>
        <module>datavec</module>
        <module>deeplearning4j</module>
        <module>python4j</module>
        <module>omnihub</module>
        <module>resources</module>
        <module>codegen</module>
    </modules>

    <scm>
        <connection>scm:git://github.com:deeplearning4j/deeplearning4j.git</connection>
        <developerConnection>scm:git:git@github.com:deeplearning4j/deeplearning4j.git
        </developerConnection>
        <url>git@github.com:deeplearning4j/deeplearning4j.git</url>
        <tag>HEAD</tag>
    </scm>

    <repositories>
        <!-- Mainly for dokka/kotlinx. Not used outside of releases for kotlin related modules-->
        <repository>
            <id>jetbrains-kotlinx</id>
            <url>https://maven.pkg.jetbrains.space/public/p/kotlinx-html/maven</url>
            <name>Kotlinx repo</name>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>


        <repository>
            <id>ossrh</id>
            <name>Sonatype Nexus Snapshots</name>
            <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>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>ossrh</id>
            <name>Sonatype Nexus Snapshots</name>
            <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>
        </pluginRepository>
    </pluginRepositories>



    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <encoding>UTF-8</encoding>
        <project.build.sourceEncoding>${encoding}</project.build.sourceEncoding>
        <project.reporting.outputEncoding>${encoding}</project.reporting.outputEncoding>
        <project.resources.sourceEncoding>${encoding}</project.resources.sourceEncoding>
        <archetype.encoding>${encoding}</archetype.encoding>
        <deeplearning4j.version>1.0.0-SNAPSHOT</deeplearning4j.version>
        <dl4j.version>1.0.0-SNAPSHOT</dl4j.version>
        <nd4j.version>1.0.0-SNAPSHOT</nd4j.version>
        <datavec.version>1.0.0-SNAPSHOT</datavec.version>
        <dl4j.release.server>ossrh</dl4j.release.server>
        <aspectj.version>1.9.7</aspectj.version>
        <dl4j-test-resources.version>1.0.0-SNAPSHOT</dl4j-test-resources.version>
        <dl4j-test-resources.classifier></dl4j-test-resources.classifier>
        <rxjava.version>2.2.21</rxjava.version>
        <arrow.version>6.0.1</arrow.version>
        <jets3t.version>0.7.1</jets3t.version>
        <metrics.version>3.2.6</metrics.version>
        <netty.version>4.1.74.Final</netty.version>
        <objenesis.version>2.6</objenesis.version>
        <paranamer.version>2.6</paranamer.version>
        <ws.rs.version>2.0</ws.rs.version>
        <snakeyaml.version>1.26</snakeyaml.version>
        <!-- FIXME: Might need be synced with all modules that uses spring-core plugin (nd4j-cuda-11.0, nd4j-tests, nd4j-common-tests) -->
        <spring.version>5.2.24.RELEASE</spring.version>
        <oshi.version>3.4.2</oshi.version>
        <typesafe.config.version>1.3.0</typesafe.config.version>
        <jcommander.version>1.27</jcommander.version>
        <jodatime.version>2.2</jodatime.version>
        <protonpack.version>1.15</protonpack.version>
        <poi.version>5.2.0</poi.version>
        <jodah.typetools.version>0.5.0</jodah.typetools.version>
        <freemarker.version>2.3.23</freemarker.version>
        <geoip2.version>2.8.1</geoip2.version>
        <stream.analytics.version>2.9.8</stream.analytics.version>
        <opencsv.version>2.3</opencsv.version>
        <tdigest.version>3.2</tdigest.version>
        <jtransforms.version>3.1</jtransforms.version>
        <fastutil.version>6.5.7</fastutil.version>
        <unirest.version>1.4.9</unirest.version>
        <reflections.version>0.9.10</reflections.version>
        <breeze.version>1.0</breeze.version>
        <byteunits.version>0.9.1</byteunits.version>

        <!-- To skip header file parsing phase: -Djavacpp.parser.skip=true  -->
        <javacpp.parser.skip>false</javacpp.parser.skip>
        <!-- To skip native compilation phase: -Djavacpp.compiler.skip=true -->
        <javacpp.compiler.skip>false</javacpp.compiler.skip>
        <javacpp.platform.root/>      <!-- -Djavacpp.platform.root=/path/to/android-ndk/ -->
        <javacpp.platform.compiler/>  <!-- -Djavacpp.platform.compiler=/path/to/arm-linux-androideabi-g++ -->
        <javacpp.platform.sysroot/>   <!-- -Djavacpp.platform.sysroot=$(xcrun -sdk iphoneos -show-sdk-path) -->
        <javacpp.platform.extension/> <!-- -Djavacpp.platform.extension=-avx512 -->
        <!-- Must not be empty. Otherwise the command line will fail. Put all arguments here needed for customization. If overridden, ensure not empty.-->
        <javacpp.compiler.options>-Wl,--no-undefined</javacpp.compiler.options>
         <javacpp.platform.properties>${javacpp.platform}</javacpp.platform.properties>


        <javacpp.version>1.5.9</javacpp.version>
        <javacpp-presets.version>1.5.9</javacpp-presets.version>
        <javacv.version>1.5.9</javacv.version>
        <javacpp.platform.additionalIncludePaths />
        <javacpp.platform.cppincludepath />
        <javacpp.platform.library.path />
        <!-- Used in nd4j-backend-impls for directory-maven-plugin to assist with finding native libs for tests -->
        <nd4j.native.basedir />
        <nd4j.cuda.basedir />


        <moditect.generate.skip>true</moditect.generate.skip>
        <moditect.add.skip>false</moditect.add.skip>
        <moditect.version>1.0.0.RC2</moditect.version>

        <python.version>3.11.3</python.version>
        <cpython-platform.version>${python.version}-${javacpp-presets.version}</cpython-platform.version>
        <numpy.version>1.24.3</numpy.version>
        <numpy.javacpp.version>${numpy.version}-${javacpp-presets.version}</numpy.javacpp.version>
        <onnx.version>1.14.0</onnx.version>
        <onnx.javacpp.version>${onnx.version}-${javacpp-presets.version}</onnx.javacpp.version>
        <openblas.version>0.3.23</openblas.version>
        <mkl.version>2023.1</mkl.version>
        <opencv.version>4.7.0</opencv.version>
        <hdf5.version>1.14.1</hdf5.version>
        <tensorflow.version>1.15.5</tensorflow.version>
        <!--- Hardcoded since TF1 isn't updating anymore-->
        <tensorflow.javacpp.version>${tensorflow.version}-1.5.8</tensorflow.javacpp.version>

        <archunit.version>0.17</archunit.version>
        <commons-compress.version>1.21</commons-compress.version>
        <commonsmath.version>3.5</commonsmath.version>
        <commonslang.version>3.11</commonslang.version>
        <commonsio.version>2.7</commonsio.version>
        <commons-codec.version>1.10</commons-codec.version>
        <commons.math.version>${commonsmath.version}</commons.math.version>
        <commons.lang.version>${commonslang.version}</commons.lang.version>
        <commons.io.version>${commonsio.version}</commons.io.version>
        <commons-math3.version>${commonsmath.version}</commons-math3.version>
        <commons-lang.version>2.6</commons-lang.version>
        <commons-lang3.version>${commonslang.version}</commons-lang3.version>
        <commons-logging.version>1.2</commons-logging.version>
        <commons-net.version>3.1</commons-net.version>
        <commons-io.version>${commonsio.version}</commons-io.version>
        <commons-collections.version>3.2.2</commons-collections.version>
        <commons-collections4.version>4.1</commons-collections4.version>
        <spark.version>3.3.0</spark.version>
        <spark.major.version>2</spark.major.version>
        <args4j.version>2.0.29</args4j.version>
        <slf4j.version>1.7.21</slf4j.version>
        <junit.version>5.8.0-M1</junit.version>
        <junit.platform.launcher.version>1.8.0-M1</junit.platform.launcher.version>
        <archunit.version>0.14.1</archunit.version>
        <logback.version>1.2.3</logback.version>
        <jackson.version>2.14.2</jackson.version>
        <jackson.databind.version>2.14.2</jackson.databind.version>
        <shaded.snakeyaml.version>1.33</shaded.snakeyaml.version>
        <geo.jackson.version>2.8.7</geo.jackson.version>
        <lombok.version>1.18.24</lombok.version>
        <json.versiounitn>20131018</json.versiounitn>
        <google.protobuf.version>3.21.7</google.protobuf.version>
        <google.protobuf.solr.version>2.6.1</google.protobuf.solr.version>
        <failIfNoTests>false</failIfNoTests>
        <!-- Hadoop version used by Spark 1.6.3 and 2.2.1 (and likely others) -->
        <hadoop.version>2.2.0</hadoop.version>
        <camel.version>2.16.3</camel.version>
        <zookeeper.version>3.4.6</zookeeper.version>
        <agrona.version>1.16.0</agrona.version>
        <mapdb.version>3.0.5</mapdb.version>
        <sqlite.version>3.15.1</sqlite.version>
        <javax.ws.rs.version>2.0</javax.ws.rs.version>
        <guava.jre.version>30.1.1-jre</guava.jre.version>
        <guava.android.version>28.0-android</guava.android.version>
        <gson.version>2.8.0</gson.version>
        <threadly.version>4.10.0</threadly.version>
        <vertx.version>3.9.0</vertx.version>

        <flatbuffers.version>1.12.0</flatbuffers.version>
        <grpc.version>1.14.0</grpc.version>
        <javax.annotation-api.version>1.2</javax.annotation-api.version>
        <javax.activation.version>1.1.1</javax.activation.version>
        <jaxb.version>2.3.0</jaxb.version>

        <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
        <maven-source-plugin.version>3.2.0</maven-source-plugin.version>
        <maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version>
        <maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
        <maven-release-plugin.version>2.5.3</maven-release-plugin.version>
        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
        <maven-scala-plugin.version>4.5.4</maven-scala-plugin.version>
        <maven-resources-plugin.version>3.0.1</maven-resources-plugin.version>
        <sbt-compiler-maven-plugin.version>1.0.0</sbt-compiler-maven-plugin.version>
        <maven-git-commit-plugin.version>2.2.2</maven-git-commit-plugin.version>
        <maven-git-commit-id-plugin.version>${maven-git-commit-plugin.version}
        </maven-git-commit-id-plugin.version>
        <maven-build-helper-plugin.version>3.0.0</maven-build-helper-plugin.version>
        <maven-play2-plugin.version>1.0.0-beta5</maven-play2-plugin.version>
        <maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
        <maven-surefire.version>${maven-surefire-plugin.version}</maven-surefire.version>
        <maven-enforcer-plugin.version>1.4.1</maven-enforcer-plugin.version>
        <maven-formatter-plugin.version>2.12.1</maven-formatter-plugin.version>
        <maven-lifecycle-mapping-plugin.version>1.0.0</maven-lifecycle-mapping-plugin.version>
        <maven-lifecycle-mapping.version>${maven-lifecycle-mapping-plugin.version}
        </maven-lifecycle-mapping.version>
        <maven-shade-plugin.version>3.2.1</maven-shade-plugin.version>
        <maven-jar-plugin.version>3.0.2</maven-jar-plugin.version>
        <maven-dependency-plugin.version>3.0.0</maven-dependency-plugin.version>
        <maven-invoker-plugin.version>2.2</maven-invoker-plugin.version>
        <maven-antrun-plugin.version>1.8</maven-antrun-plugin.version>
        <maven-replacer-plugin.version>1.5.3</maven-replacer-plugin.version>
        <protoc-jar-maven-plugin.version>3.11.4</protoc-jar-maven-plugin.version>
        <mockito.version>3.8.0</mockito.version>
        <mockito.jupter.version>3.8.0</mockito.jupter.version>
        <exec-maven-plugin.version>1.6.0</exec-maven-plugin.version>
        <jetspeed-mvn-maven-plugin.version>2.3.1</jetspeed-mvn-maven-plugin.version>


        <!-- Scala 2.12.x -->
        <scala212.version>2.12.14</scala212.version>
        <scala212.binary.version>2.12</scala212.binary.version>

        <lz4.version>1.7.0</lz4.version>

        <libnd4j.tests>--tests</libnd4j.tests>
        <libnd4j.test.skip>false</libnd4j.test.skip>
        <jumpy.test.skip>false</jumpy.test.skip>
        <pydatavec.test.skip>false</pydatavec.test.skip>
        <pydl4j.test.skip>false</pydl4j.test.skip>
        <skipBackendChoice>false</skipBackendChoice>
        <!-- Test resource profile must be enabled unless using -DskipTests etc -->
        <skipTestResourceEnforcement>false</skipTestResourceEnforcement>
        <findbugs-annotations.version>1.3.9-1</findbugs-annotations.version>
        <netty.version>4.1.74.Final</netty.version>
        <log4j2.version>2.17.2</log4j2.version>
        <byteunits.version>0.9.1</byteunits.version>
        <neoitertools.version>1.0.0</neoitertools.version>
        <rxjava.version>2.2.0</rxjava.version>
        <kotlin.version>1.7.20</kotlin.version>
        <javapoet.version>1.13.0</javapoet.version>
        <kotlin-logging.version>2.1.21</kotlin-logging.version>
        <test.heap.size>8g</test.heap.size>
        <test.offheap.size>8g</test.offheap.size>
        <module.name></module.name>
        <jdk9.exports>--add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED --add-exports java.base/jdk.internal.misc=ALL-UNNAMED --add-exports java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED</jdk9.exports>
    </properties>


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.lz4</groupId>
                <artifactId>lz4-java</artifactId>
                <version>${lz4.version}</version>
            </dependency>

            <dependency>
                <groupId>org.lz4</groupId>
                <artifactId>lz4-pure-java</artifactId>
                <version>${lz4.version}</version>
            </dependency>

            <dependency>
                <groupId>net.jpountz.lz4</groupId>
                <artifactId>lz4</artifactId>
                <version>1.2.0</version>
            </dependency>

            <dependency>
                <groupId>org.lz4</groupId>
                <artifactId>lz4</artifactId>
                <version>1.8.0</version>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-all</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-buffer</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
                <version>${log4j2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
                <version>${log4j2.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>${log4j2.version}</version>
            </dependency>
            <!-- Parameterized Tests -->
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-params</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency><groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-launcher</artifactId>
                <version>${junit.platform.launcher.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib</artifactId>
                <version>${kotlin.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-reflect</artifactId>
                <version>${kotlin.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib-common</artifactId>
                <version>${kotlin.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib-jdk8</artifactId>
                <version>${kotlin.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-test</artifactId>
                <version>${kotlin.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-all</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty</artifactId>
                <version>3.9.9.Final</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-buffer</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-handler</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-codec-http</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-codec</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-transport-native-epoll</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-transport</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-resolver</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-transport-native-unix-common</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-codec-http2</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-handler-proxy</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-codec-socks</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-resolver-dns</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-codec-dns</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.walkmod</groupId>
                <artifactId>junit4git</artifactId>
                <version>${junit4git.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>

                <plugin>
                    <groupId>org.moditect</groupId>
                    <artifactId>moditect-maven-plugin</artifactId>
                    <version>${moditect.version}</version>
                    <configuration>
                        <jvmVersion>9</jvmVersion>
                        <overwriteExistingFiles>true</overwriteExistingFiles>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                    </configuration>
                    <executions>
                        <execution>
                            <id>generate-module-info</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>generate-module-info</goal>
                            </goals>
                            <configuration>
                                <modules>
                                    <module>
                                        <artifact>
                                            <groupId>${project.groupId}</groupId>
                                            <artifactId>${project.artifactId}</artifactId>
                                            <version>${project.version}</version>
                                        </artifact>

                                        <moduleInfo>
                                            <name>${module.name}</name>
                                            <exports>
                                                *;
                                            </exports>
                                            <open>true</open>
                                        </moduleInfo>

                                    </module>
                                </modules>
                                <jdepsExtraArgs>
                                    <arg>--ignore-missing-deps</arg>
                                    <arg>--multi-release</arg>
                                    <arg>9</arg>
                                </jdepsExtraArgs>
                                <skip>${moditect.generate.skip}</skip>
                            </configuration>
                        </execution>

                        <execution>
                            <id>add-module-infos</id>
                            <phase>package</phase>
                            <goals>
                                <goal>add-module-info</goal>
                            </goals>
                            <configuration>
                                <modules>
                                    <module>
                                        <file>${project.build.directory}/${project.artifactId}-${project.version}.jar</file>
                                        <moduleInfoFile>${project.basedir}/src/main/java9/module-info.java</moduleInfoFile>
                                    </module>
                                </modules>
                                <skip>${moditect.add.skip}</skip>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>${maven-antrun-plugin.version}</version>
                    <executions>
                        <execution>
                            <phase>validate</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                                <tasks>
                                    <echoproperties />
                                </tasks>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>


                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${maven-surefire-plugin.version}</version>
                    <inherited>true</inherited>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.surefire</groupId>
                            <artifactId>surefire-junit-platform</artifactId>
                            <version>${maven-surefire-plugin.version}</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <trimStackTrace>false</trimStackTrace>
                        <forkNode implementation="org.apache.maven.plugin.surefire.extensions.SurefireForkNodeFactory"/>
                        <forkCount>1</forkCount>
                        <reuseForks>false</reuseForks>
                        <environmentVariables>
                            <OMP_NUM_THREADS>1</OMP_NUM_THREADS>
                        </environmentVariables>
                        <classpathDependencyExcludes>
                            <classpathDependencyExclude>org.junit:junit</classpathDependencyExclude>
                            <classpathDependencyExclude>com.google.android:android
                            </classpathDependencyExclude>
                        </classpathDependencyExcludes>
                        <useSystemClassLoader>true</useSystemClassLoader>
                        <useManifestOnlyJar>false</useManifestOnlyJar>
                        <argLine>--add-exports java.base/jdk.internal.misc=ALL-UNNAMED --add-exports java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED -Xmx${test.heap.size} -Dorg.bytedeco.javacpp.maxphysicalbytes=${test.offheap.size} -Dorg.bytedeco.javacpp.maxbytes=${test.offheap.size} </argLine>
                        <forkedProcessTimeoutInSeconds>240</forkedProcessTimeoutInSeconds>
                        <forkedProcessExitTimeoutInSeconds>240</forkedProcessExitTimeoutInSeconds>
                        <parallelTestsTimeoutInSeconds>240</parallelTestsTimeoutInSeconds>
                        <parallelTestsTimeoutForcedInSeconds>240</parallelTestsTimeoutForcedInSeconds>
                        <forkCount>1</forkCount>
                        <threadCount>1</threadCount>
                        <perCoreThreadCount>false</perCoreThreadCount>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.jetbrains.kotlin</groupId>
                    <artifactId>kotlin-maven-plugin</artifactId>
                    <version>${kotlin.version}</version>
                    <configuration>
                        <args>
                            <arg>-Xjsr305=strict</arg>
                        </args>
                        <compilerPlugins>
                            <plugin>spring</plugin>
                            <plugin>jpa</plugin>
                        </compilerPlugins>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.jetbrains.kotlin</groupId>
                            <artifactId>kotlin-maven-allopen</artifactId>
                            <version>${kotlin.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.jetbrains.kotlin</groupId>
                            <artifactId>kotlin-maven-noarg</artifactId>
                            <version>${kotlin.version}</version>
                        </dependency>
                    </dependencies>
                    <executions>
                        <execution>
                            <id>compile</id>
                            <goals> <goal>compile</goal> </goals>
                            <configuration>
                                <sourceDirs>
                                    <sourceDir>${project.basedir}/src/main/stubs</sourceDir>
                                    <sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
                                    <sourceDir>${project.basedir}/src/main/java</sourceDir>
                                    <sourceDir>${project.basedir}/src/main/ops</sourceDir>
                                </sourceDirs>
                            </configuration>
                        </execution>
                        <execution>
                            <id>test-compile</id>
                            <goals> <goal>test-compile</goal> </goals>
                            <configuration>
                                <sourceDirs>
                                    <sourceDir>${project.basedir}/src/test/stubs</sourceDir>
                                    <sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
                                    <sourceDir>${project.basedir}/src/test/java</sourceDir>
                                    <sourceDir>${project.basedir}/src/test/ops</sourceDir>
                                </sourceDirs>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${maven-compiler-plugin.version}</version>
                    <configuration>
                        <source>${maven.compiler.source}</source>
                        <target>${maven.compiler.target}</target>
                    <compilerArgs>
                        <arg>--add-exports</arg>
                        <arg>java.base/java.nio=ALL-UNNAMED</arg>
                        <arg>--add-opens</arg>
                        <arg>java.base/java.nio=ALL-UNNAMED</arg>
                    </compilerArgs>
                    </configuration>
                </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>
                                <rules>
                                    <requireMavenVersion>
                                        <version>3.3</version>
                                        <message>Please install maven 3.3 or higher</message>
                                    </requireMavenVersion>
                                </rules>
                            </configuration>
                        </execution>
                        <execution>
                            <id>enforce-excluded-dependencies</id>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                            <configuration>
                                <rules>
                                    <bannedDependencies>
                                        <excludes>
                                            <exclude>org.projectlombok:*:*:*:compile</exclude>
                                        </excludes>
                                    </bannedDependencies>
                                </rules>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <!-- Configuration for git-commit-id plugin - used with ND4J version check functionality -->
                <plugin>
                    <groupId>pl.project13.maven</groupId>
                    <artifactId>git-commit-id-plugin</artifactId>
                    <version>${maven-git-commit-plugin.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>revision</goal>
                            </goals>
                            <phase>generate-resources</phase>
                        </execution>
                    </executions>
                    <configuration>
                        <generateGitPropertiesFile>true</generateGitPropertiesFile>
                        <failOnNoGitDirectory>false</failOnNoGitDirectory>
                        <generateGitPropertiesFilename>
                            ${project.basedir}/target/generated-sources/src/main/resources/org/eclipse/${project.groupId}-${project.artifactId}-git.properties
                        </generateGitPropertiesFilename>
                        <gitDescribe>
                            <skip>true</skip>
                        </gitDescribe>
                    </configuration>
                </plugin>
                <!-- Add generated git.properties files resource directory, for output of git-commit-id plugin -->
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>${maven-build-helper-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>add-resource</id>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>add-resource</goal>
                            </goals>
                            <configuration>
                                <resources>
                                    <resource>
                                        <directory>
                                            ${project.basedir}/target/generated-sources/src/main/resources
                                        </directory>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                        <execution>
                            <id>get-cpu-count</id>
                            <goals>
                                <goal>cpu-count</goal>
                            </goals>
                            <configuration>
                                <cpuCount>cpu.core.count</cpuCount>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>com.lewisd</groupId>
                                        <artifactId>lint-maven-plugin</artifactId>
                                        <versionRange>[0.0.11,)</versionRange>
                                        <goals>
                                            <goal>check</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore/>
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>net.revelc.code.formatter</groupId>
                    <artifactId>formatter-maven-plugin</artifactId>
                    <version>${maven-formatter-plugin.version}</version>
                    <configuration>
                        <!--suppress UnresolvedMavenProperty -->
                        <configFile>${session.executionRootDirectory}/../contrib/formatter.xml</configFile>
                    </configuration>
                </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-enforcer-plugin</artifactId>
                <version>1.4.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.8.2</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
                <version>1.6.8</version>
                <executions>
                    <execution>
                        <id>default-deploy</id>
                        <phase>deploy</phase>
                        <goals>
                            <goal>deploy</goal>
                        </goals>
                    </execution>
                </executions>
                <extensions>true</extensions>
                <configuration>
                    <detail>true</detail>
                    <serverId>${dl4j.release.server}</serverId>
                    <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
                    <keepStagingRepositoryOnFailure>true</keepStagingRepositoryOnFailure>
                    <skipStagingRepositoryClose>true</skipStagingRepositoryClose>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-maven-plugin</artifactId>
                <version>${kotlin.version}</version>
                <executions>
                    <execution>
                        <id>compile</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>test-compile</id>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>test-compile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <jvmTarget>11</jvmTarget>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <compilerArgs>
                        <arg>--add-exports</arg>
                        <arg>java.base/java.nio=ALL-UNNAMED</arg>
                        <arg>--add-opens</arg>
                        <arg>java.base/java.nio=ALL-UNNAMED</arg>
                    </compilerArgs>
                </configuration>
                <executions>
                    <execution>
                        <id>default-compile</id>
                        <phase>none</phase>
                    </execution>
                    <execution>
                        <id>default-testCompile</id>
                        <phase>none</phase>
                    </execution>
                    <execution>
                        <id>compile</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>testCompile</id>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>parallel-tests</id>
            <properties>
                <junit.jupiter.execution.parallel.enabled>true</junit.jupiter.execution.parallel.enabled>
                <junit.jupiter.execution.parallel.mode.default>concurrent</junit.jupiter.execution.parallel.mode.default>
            </properties>
        </profile>

        <profile>
            <id>test-larger-heap-size</id>
            <properties>
                <test.heap.size>8g</test.heap.size>
                <test.offheap.size>8g</test.offheap.size>
            </properties>
        </profile>


        <profile>
            <id>github</id>
            <distributionManagement>
                <repository>
                    <id>github</id>
                    <name>GitHub Packages</name>
                    <url>https://maven.pkg.github.com/eclipse/deeplearning4j</url>
                </repository>

                <snapshotRepository>
                    <id>github</id>
                    <name>Github snapshots</name>
                    <url>https://maven.pkg.github.com/eclipse/deeplearning4j</url>
                </snapshotRepository>
            </distributionManagement>
        </profile>

        <profile>
            <id>ossrh</id>
            <distributionManagement>
                <repository>
                    <id>ossrh</id>
                    <name>Nexus Release Repository</name>
                    <url>http://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
                </repository>

                <snapshotRepository>
                    <id>ossrh</id>
                    <name>Sonatype Nexus snapshot repository</name>
                    <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
                </snapshotRepository>
            </distributionManagement>
        </profile>

        <!-- This controls skipping the test backend choice enforcement below -->
        <profile>
            <id>skipTestCompileAndRun</id>
            <activation>
                <property>
                    <name>maven.test.skip</name>
                    <value>true</value>
                </property>
            </activation>
            <properties>
                <libnd4j.tests></libnd4j.tests>
                <libnd4j.test.skip>true</libnd4j.test.skip>
                <scala.test.skip>true</scala.test.skip>
                <skipBackendChoice>true</skipBackendChoice>
                <skipTestResourceEnforcement>true</skipTestResourceEnforcement>
            </properties>
        </profile>
        <profile>
            <id>skipTestRun</id>
            <activation>
                <property>
                    <name>skipTests</name>
                </property>
            </activation>
            <properties>
                <libnd4j.tests></libnd4j.tests>
                <libnd4j.test.skip>true</libnd4j.test.skip>
                <scala.test.skip>true</scala.test.skip>
                <skipBackendChoice>true</skipBackendChoice>
                <skipTestResourceEnforcement>true</skipTestResourceEnforcement>
            </properties>
        </profile>
        <!--
        testresources profile must be running when executing tests. However, maven enforcer plugin seems to be unable
         to enforce only when actually running tests - so we'll skip the enforcement (using profiles skipTestRun and skipTestCompileAndRun)
         when -DskipTests or -Dmaven.test.skip=true is used
         -->

        <profile>
            <id>qa</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <version>3.1.2</version>
                        <executions>
                            <execution>
                                <phase>install</phase>
                                <goals>
                                    <goal>copy-dependencies</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.build.directory}/lib
                                    </outputDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </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>
                        <version>${maven-javadoc-plugin.version}</version>
                        <configuration>
                            <minmemory>256m</minmemory>
                            <maxmemory>2048m</maxmemory>
                            <doclint>all,-missing</doclint>
                            <quiet>true</quiet>
                        </configuration>
                        <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>
            </build>
        </profile>
        <profile>
            <id>trimSnapshots</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>build-helper-maven-plugin</artifactId>
                        <version>${maven-build-helper-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>remove-old-artifacts</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>remove-project-artifact</goal>
                                </goals>
                                <configuration>
                                    <removeAll>true
                                    </removeAll><!-- remove all versions of built artifacts including all versions.  Install phase will regenerate -->
                                </configuration>
                            </execution>
                            <execution>
                                <id>get-cpu-count</id>
                                <goals>
                                    <goal>cpu-count</goal>
                                </goals>
                                <configuration>
                                    <cpuCount>system.numCores</cpuCount>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>1.9build</id>
            <activation>
                <jdk>1.9</jdk>
            </activation>
            <properties>
                <maven.compiler.release>7</maven.compiler.release>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-toolchains-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>libnd4jhome-defined</id>
            <activation>
                <property>
                    <name>env.LIBND4J_HOME</name>
                </property>
            </activation>
            <properties>
                <libnd4jhome>${env.LIBND4J_HOME}</libnd4jhome>
            </properties>
        </profile>
        <profile>
            <id>libnd4jhome-undefined</id>
            <activation>
                <property>
                    <name>!env.LIBND4J_HOME</name>
                </property>
            </activation>
            <properties>
                <libnd4jhome>${basedir}/../../../../libnd4j/</libnd4jhome>
            </properties>
        </profile>

        <profile>
            <id>platform-tests</id>
            <modules>
                <module>platform-tests</module>
            </modules>
        </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.kernel>linux</os.kernel>
                <os.name>linux</os.name>
            </properties>
        </profile>
        <profile>
            <id>macosx</id>
            <activation>
                <os>
                    <name>mac os x</name>
                </os>
            </activation>
            <properties>
                <os.kernel>darwin</os.kernel>
                <os.name>macosx</os.name>
            </properties>
        </profile>
        <profile>
            <id>windows</id>
            <activation>
                <os>
                    <family>windows</family>
                </os>
            </activation>
            <properties>
                <os.kernel>windows</os.kernel>
                <os.name>windows</os.name>
            </properties>
        </profile>

        <profile>
            <id>arm</id>
            <activation>
                <os>
                    <arch>arm</arch>
                </os>
            </activation>
            <properties>
                <os.arch>armhf</os.arch>
            </properties>
        </profile>

        <profile>
            <id>android</id>
            <activation>
                <os><name>android</name></os>
            </activation>
            <properties>
                <os.kernel>linux</os.kernel>
                <os.name>android</os.name>
                <os.arch>arm</os.arch>
            </properties>
        </profile>

        <profile>
            <id>aarch64</id>
            <activation>
                <os>
                    <arch>aarch64</arch>
                </os>
            </activation>
            <properties>
                <os.arch>arm64</os.arch>
            </properties>
        </profile>
        <profile>
            <id>armv8</id>
            <activation>
                <os>
                    <arch>armv8</arch>
                </os>
            </activation>
            <properties>
                <os.arch>arm64</os.arch>
            </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>
        <!-- Integration Tests Profile. By default (when this profile is not enabled) unit tests are run only.
             Note also that some tests may run fewer/quicker cases for unit tests vs. integration tests
        -->
        <profile>
            <id>integration-tests</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>${maven-surefire-plugin.version}</version>
                        <inherited>true</inherited>
                        <configuration>
                            <forkNode implementation="org.apache.maven.plugin.surefire.extensions.SurefireForkNodeFactory"/>
                            <forkCount>1</forkCount>
                            <reuseForks>false</reuseForks>
                            <trimStackTrace>false</trimStackTrace>
                            <environmentVariables>
                                <OMP_NUM_THREADS>1</OMP_NUM_THREADS>
                                <DL4J_INTEGRATION_TESTS>true</DL4J_INTEGRATION_TESTS>
                            </environmentVariables>
                            <argLine>--add-exports java.base/jdk.internal.misc=ALL-UNNAMED --add-exports java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED -Xmx${test.heap.size} -Dorg.bytedeco.javacpp.maxphysicalbytes=${test.offheap.size} -Dorg.bytedeco.javacpp.maxbytes=${test.offheap.size}</argLine>
                            <forkCount>1</forkCount>
                            <reuseForks>false</reuseForks>
                            <forkedProcessTimeoutInSeconds>240</forkedProcessTimeoutInSeconds>
                            <forkedProcessExitTimeoutInSeconds>240</forkedProcessExitTimeoutInSeconds>
                            <parallelTestsTimeoutInSeconds>240</parallelTestsTimeoutInSeconds>
                            <parallelTestsTimeoutForcedInSeconds>240</parallelTestsTimeoutForcedInSeconds>
                            <forkCount>1</forkCount>
                            <threadCount>1</threadCount>
                            <perCoreThreadCount>false</perCoreThreadCount>
                        </configuration>
                        <dependencies>
                            <dependency>
                                <groupId>org.apache.maven.surefire</groupId>
                                <artifactId>surefire-junit-platform</artifactId>
                                <version>${maven-surefire-plugin.version}</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>