apply plugin: 'kotlin'
// Java Persistence API support: create no-arg constructor
// see: http://stackoverflow.com/questions/32038177/kotlin-with-jpa-default-constructor-hell
apply plugin: 'kotlin-jpa'
apply plugin: 'net.corda.plugins.publish-utils'
apply plugin: 'net.corda.plugins.quasar-utils'
apply plugin: 'net.corda.plugins.cordapp'
apply plugin: 'com.jfrog.artifactory'

description 'Corda finance module - flows'

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

configurations {
    testArtifacts.extendsFrom testRuntimeClasspath
    integrationTestCompile.extendsFrom testCompile
    integrationTestRuntimeOnly.extendsFrom testRuntimeOnly
}

dependencies {
    // Note: 3rd party CorDapps should remember to include the relevant Finance CorDapp dependencies using `cordapp`
    // cordapp project(':finance:workflows')
    // cordapp project(':finance:contracts')
    cordaCompile project(':core')
    cordaCompile project(':confidential-identities')
    
    cordapp project(':finance:contracts')

    testCompile project(':test-utils')
    testCompile project(path: ':core', configuration: 'testArtifacts')
    testCompile project(':node-driver')

    testImplementation "org.junit.jupiter:junit-jupiter-api:${junit_jupiter_version}"
    testImplementation "junit:junit:$junit_version"

    testRuntimeOnly "org.junit.vintage:junit-vintage-engine:${junit_vintage_version}"
    testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${junit_jupiter_version}"
    testRuntimeOnly "org.junit.platform:junit-platform-launcher:${junit_platform_version}"

    // AssertJ: for fluent assertions for testing
    testCompile "org.assertj:assertj-core:$assertj_version"
}

task testJar(type: Jar) {
    classifier "tests"
    from sourceSets.test.output
}

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

artifacts {
    testArtifacts testJar
}

jar {
    baseName 'corda-finance-workflows'
}

cordapp {
    targetPlatformVersion corda_platform_version.toInteger()
    minimumPlatformVersion 1
    workflow {
        name "Corda Finance Demo"
        versionId 1
        vendor "R3"
        licence "Open Source (Apache 2)"
    }
    // By default the Cordapp is signed by Corda development certificate, for production build pass the following system properties to Gradle to use specific keystore e.g:
    // ./gradlew -Dsigning.enabled="true" -Dsigning.keystore="/path/to/keystore.jks" -Dsigning.alias="alias" -Dsigning.storepass="password" -Dsigning.keypass="password"
}

publish {
    name jar.baseName
}
