pom.xml
<?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>