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

description 'Corda verifier'

//noinspection GroovyAssignabilityCheck
configurations {
    integrationTestCompile.extendsFrom testCompile
    integrationTestRuntime.extendsFrom testRuntime
}

sourceSets {
    integrationTest {
        kotlin {
            compileClasspath += main.output + test.output
            runtimeClasspath += main.output + test.output
            srcDir file('src/integration-test/kotlin')
        }
    }
}

// Use manual resource copying of log4j2.xml rather than source sets.
// This prevents problems in IntelliJ with regard to duplicate source roots.
processResources {
    from file("$rootDir/config/dev/log4j2.xml")
}

dependencies {
    compile project(":node-api")

    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
    compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
    testCompile "org.jetbrains.kotlin:kotlin-test:$kotlin_version"

    // TODO: remove the forced update of commons-collections and beanutils when artemis updates them
    compile "org.apache.commons:commons-collections4:${commons_collections_version}"
    compile "commons-beanutils:commons-beanutils:${beanutils_version}"
    compile "org.apache.activemq:artemis-core-client:${artemis_version}"

    // Log4J: logging framework (with SLF4J bindings)
    compile "org.apache.logging.log4j:log4j-slf4j-impl:${log4j_version}"
    compile "org.apache.logging.log4j:log4j-core:${log4j_version}"

    integrationTestCompile project(":node-driver")
    integrationTestCompile project(":client:mock")

    // Integration test helpers
    integrationTestCompile "junit:junit:$junit_version"

    integrationTestCompile "org.apache.activemq:artemis-server:${artemis_version}"
}

task standaloneJar(type: Jar) {
    // Create a fat jar by packing all deps into the output
    from {
        configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) }
    }
    with jar
    exclude("META-INF/*.DSA")
    exclude("META-INF/*.RSA")
    exclude("META-INF/*.SF")
    manifest {
        attributes 'Main-Class': 'net.corda.verifier.Verifier'
    }
    archiveName "corda-verifier.jar"
}

task integrationTest(type: Test) {
    testClassesDirs = sourceSets.integrationTest.output.classesDirs
    classpath = sourceSets.integrationTest.runtimeClasspath
}

artifacts {
    publish standaloneJar {
        classifier ""
    }
}

publish {
    disableDefaultJar = true
    name 'corda-verifier'
}