plugins {
    id 'java-platform'
    id 'maven-publish'
}

ext {
    scalaVersion = rootProject.ext.scalaVersion
    javacppPlatform = osdetector.classifier
}

    def javacpp = [version: "1.5.7", presetsVersion: "1.5.7"]
    def hdf5 = [version: "1.12.1"]
    def jackson = [version: "2.13.4"]
    def cuda = [version: "11.6"]
    def cudnn = [version: "8.3"]
    def openblas = [version: "0.3.19"]
    def numpy = [version: "1.22.2"]
    def tensorflow = [version: "1.15.5"]
    def cpython = [version: "3.10.2"]

    def javacv = [version:"1.5.7"]
    def opencv = [version: "4.5.5"]
    def leptonica = [version: "1.82.0"]
    def junit = [version: "5.9.1"]

    def flatbuffers = [version: "1.10.0"]

    def spark = [version: "3.2.2"]
    def scala = [version:"2.12.15"] //[version:"2.13.5"]

    def netty = [version: "4.1.68.Final"]

    def okhttp3 = [version: "4.10.0"]


javaPlatform {
   allowDependencies()
}

dependencies {

    api enforcedPlatform("io.netty:netty-bom:${netty.version}")
    api enforcedPlatform("com.fasterxml.jackson:jackson-bom:${jackson.version}")
    //api enforcedPlatform("com.fasterxml.jackson.core:jackson-annotations:${jackson.version}")
    api enforcedPlatform("com.squareup.okhttp3:okhttp-bom:${okhttp3.version}")


    constraints {
        api enforcedPlatform("io.netty:netty-bom:${netty.version}")
        api enforcedPlatform("com.fasterxml.jackson:jackson-bom:${jackson.version}")
        api enforcedPlatform("com.squareup.okhttp3:okhttp-bom:${okhttp3.version}")
        //api enforcedPlatform("com.fasterxml.jackson.core:jackson-annotations:${jackson.version}")
        //api "com.squareup.okhttp3:okhttp:${okhttp3}.version"
        //api "com.squareup.okhttp3:logging-interceptor:${okhttp3}.version"

        api 'com.google.guava:guava:30.1-jre'
        api "com.google.protobuf:protobuf-java:3.15.6"
        api "com.google.code.gson:gson:2.8.6"
        api "com.google.protobuf:protobuf-java-util:3.15.6"
        api "com.google.flatbuffers:flatbuffers-java:${flatbuffers.version}"

        /*
        api "com.fasterxml.jackson.core:jackson-core:${jackson.version}"
        api "com.fasterxml.jackson.core:jackson-databind:${jackson.version}"
        api "com.fasterxml.jackson.core:jackson-annotations:${jackson.version}"

        api "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${jackson.version}"
                 */
       // api "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${jackson.version}"
       // api "com.fasterxml.jackson.datatype:jackson-datatype-joda:${jackson.version}"
       // api "com.fasterxml.jackson.module:jackson-module-scala_${scalaVersion}"


        api "org.projectlombok:lombok:1.18.26"

        /*Logging*/
        api 'org.slf4j:slf4j-api:2.0.3'
        api 'org.slf4j:slf4j-simple:2.0.3'

        api "org.apache.logging.log4j:log4j-core:2.17.0"
        api "ch.qos.logback:logback-classic:1.2.3"
        api 'ch.qos.logback:logback-core:1.2.3'


        api 'commons-io:commons-io:2.5'
        api 'commons-codec:commons-codec:1.11'
        api 'commons-net:commons-net:3.6'
        api 'commons-collections:commons-collections:3.2.2'

        api 'org.apache.commons:commons-math3:3.6.1'
        api 'org.apache.commons:commons-lang3:3.9'
        api 'org.apache.commons:commons-compress:1.19'
        api 'org.apache.commons:commons-collections4:4.1'
        api "joda-time:joda-time:2.2"
        api "org.reflections:reflections:0.9.10"
        api 'org.springframework:spring-core:5.0.2.RELEASE'

        api "org.junit.jupiter:junit-jupiter-api:${junit.version}"
        api "org.junit.jupiter:junit-jupiter-engine:${junit.version}"
        api "org.junit.jupiter:junit-jupiter-params:${junit.version}"


        api 'com.jakewharton.byteunits:byteunits:0.9.1'
        api 'net.ericaro:neoitertools:1.0.0'
        api 'com.github.oshi:oshi-core:3.4.2'
        api 'com.github.oshi:oshi-json:3.4.2'


        api 'com.github.jai-imageio:jai-imageio-core:1.3.0'
        api 'com.twelvemonkeys.imageio:imageio-jpeg:3.1.1'
        api 'com.twelvemonkeys.imageio:imageio-tiff:3.1.1'
        api 'com.twelvemonkeys.imageio:imageio-psd:3.1.1'
        api 'com.twelvemonkeys.imageio:imageio-bmp:3.1.1'

        api('com.google.android:android:4.1.1.4')

        api "org.bytedeco:javacpp:${javacpp.version}"
        api "org.bytedeco:javacv:${javacv.version}"
        api "org.bytedeco:opencv:${opencv.version}-${javacpp.presetsVersion}"
        api "org.bytedeco:openblas:${openblas.version}-${javacpp.presetsVersion}"
        api "org.bytedeco:leptonica-platform:${leptonica.version}-${javacpp.presetsVersion}"
        api "org.bytedeco:hdf5-platform:${hdf5.version}-${javacpp.presetsVersion}"
        api "org.bytedeco:hdf5:${hdf5.version}-${javacpp.presetsVersion}"
        api "org.bytedeco:hdf5:${hdf5.version}-${javacpp.presetsVersion}:${javacppPlatform}"
        //api "org.bytedeco:hdf5:${hdf5.version}-${javacpp.presetsVersion}:linux-x86_64"



        api "org.bytedeco:cuda:${cuda.version}-${cudnn.version}-${javacpp.presetsVersion}"
        api "org.bytedeco:cuda-platform-redist:${cuda.version}-${cudnn.version}-${javacpp.presetsVersion}"
        api "org.bytedeco:mkl-dnn:0.21.5-${javacpp.presetsVersion}"
        api "org.bytedeco:tensorflow:${tensorflow.version}-${javacpp.presetsVersion}"
        api "org.bytedeco:cpython:${cpython.version}-${javacpp.presetsVersion}:${javacppPlatform}"
        api "org.bytedeco:numpy:${numpy.version}-${javacpp.presetsVersion}:${javacppPlatform}"
        //implementation "org.bytedeco:cpython-platform:3.9.6-1.5.6"
        //implementation "org.bytedeco:numpy-platform:1.21.1-1.5.6"

        /* Apache Spark */
        api "org.apache.spark:spark-core_${scalaVersion}:${spark.version}"
        api "org.apache.spark:spark-mllib_${scalaVersion}:${spark.version}"
        api "org.apache.spark:spark-sql_${scalaVersion}:${spark.version}"

        api "org.apache.hadoop:hadoop-client:3.2.0"

        api("org.scala-lang:scala-library:${scala.version}") {
            version {
                strictly "${scala.version}"
                because("Scala versions need to match, it is a mess otherwise.")
            }
        }
        api("org.scala-lang:scala-reflect:${scala.version}") {
            version {
                strictly "${scala.version}"
                because( "Scala versions need to match, it is a mess otherwise.")
            }
        }
        api("org.scala-lang:scala-compiler:${scala.version}") {
            version {
                strictly "${scala.version}"
                because( "Scala versions need to match, it is a mess otherwise.")
            }
        }

        api "org.agrona:agrona:1.12.0"


    }
}

/*
publishing {
    publications {
        myPlatform(MavenPublication) {
            from components.javaPlatform
        }
    }
}
*/

tasks.withType(GenerateModuleMetadata).configureEach {
    // The value 'enforced-platform' is provided in the validation
    // error message you got
    suppressedValidationErrors.add('enforced-platform')
}