buildscript {
    // For sharing constants between builds
    Properties constants = new Properties()
    file("$projectDir/../../constants.properties").withInputStream { constants.load(it) }

    ext.kotlin_version = constants.getProperty("kotlinVersion")
    ext.javaassist_version = "3.12.1.GA"

    repositories {
        mavenLocal()
        mavenCentral()
        jcenter()
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

repositories {
    mavenLocal()
    mavenCentral()
    jcenter()
}

apply plugin: 'kotlin'
apply plugin: 'idea'
apply plugin: 'net.corda.plugins.publish-utils'
apply plugin: 'com.jfrog.artifactory'

description 'A javaagent to allow hooking into Kryo checkpoints'

dependencies {
    compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    compileOnly "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
    compileOnly "javassist:javassist:$javaassist_version"
    compileOnly "com.esotericsoftware:kryo:$kryo_version"
    compileOnly "co.paralleluniverse:quasar-core:$quasar_version"

    compileOnly (project(':core')) {
        transitive = false
    }

    // Unit testing helpers.
    testCompile "org.junit.jupiter:junit-jupiter-api:${junit_jupiter_version}"
    testCompile "junit:junit:$junit_version"

    // SLF4J: commons-logging bindings for a SLF4J back end
    compileOnly "org.slf4j:slf4j-api:$slf4j_version"
}

jar {
    archiveBaseName = "${project.name}"
    manifest {
        attributes(
                'Premain-Class': 'net.corda.tools.CheckpointAgent',
                'Can-Redefine-Classes': 'true',
                'Can-Retransform-Classes': 'true',
                'Can-Set-Native-Method-Prefix': 'true',
                'Implementation-Title': "CheckpointAgent",
                'Implementation-Version': rootProject.version
        )
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

publish {
    name 'corda-tools-checkpoint-agent'
}