import static org.gradle.api.JavaVersion.VERSION_11 plugins { id 'org.jetbrains.kotlin.jvm' // Include the cordapp-cpb plugin. This automatically includes the cordapp-cpk plugin as well. // These extend existing build environment so that CPB and CPK files can be built. // This includes a CorDapp DSL that allows the developer to supply metadata for the CorDapp // required by Corda. id 'net.corda.plugins.cordapp-cpb2' id 'net.corda.cordapp.cordapp-configuration' id 'org.jetbrains.kotlin.plugin.jpa' id 'java' id 'maven-publish' id 'csde' } group 'com.r3.hellocorda' version '1.0-SNAPSHOT' def javaVersion = VERSION_11 // The CordApp section. // This is part of the DSL provided by the corda plugins to define metadata for our CorDapp. // Each component of the CorDapp would get its own CorDapp section in the build.gradle file for the component’s // subproject. // This is required by the corda plugins to build the CorDapp. cordapp { // "targetPlatformVersion" and "minimumPlatformVersion" are intended to specify the preferred // and earliest versions of the Corda platform that the CorDapp will run on respectively. // Enforced versioning has not implemented yet so we need to pass in a dummy value for now. // The platform version will correspond to and be roughly equivalent to the Corda API version. targetPlatformVersion platformVersion.toInteger() minimumPlatformVersion platformVersion.toInteger() // The cordapp section contains either a workflow or contract subsection depending on the type of component. // Declares the type and metadata of the CPK (this CPB has one CPK). workflow { name "ModuleNameHere" versionId 1 vendor "VendorNameHere" } } /* // Declare the set of Kotlin compiler options we need to build a CorDapp. tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { allWarningsAsErrors = false // Specify the version of Kotlin that we are that we will be developing. languageVersion = '1.7' // Specify the Kotlin libraries that code is compatible with apiVersion = '1.7' // Note that we Need to use a version of Kotlin that will be compatible with the Corda API. // Currently that is developed in Kotlin 1.7 so picking the same version ensures compatibility with that. // Specify the version of Java to target. jvmTarget = javaVersion // Needed for reflection to work correctly. javaParameters = true // -Xjvm-default determines how Kotlin supports default methods. // JetBrains currently recommends developers use -Xjvm-default=all // https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-default/ freeCompilerArgs += [ "-Xjvm-default=all" ] } } */ // Declare the set of Kotlin compiler options we need to build a CorDapp. tasks.withType(JavaCompile) { // -parameters - Needed for reflection and serialization to work correctly. options.compilerArgs += [ "-parameters" ] } repositories { mavenLocal() // All dependencies are held in Maven Central mavenCentral() // R3 Internal repositories // Repository the provides kotlin-stdlib-jdk8-osgi created by R3. // Final location to be decided. maven { url = "$artifactoryContextUrl/corda-dependencies" } // Repository provides Corda 5 binaries that implement Corda-API. // These will be made publicly available. // Final location to be decided. // Repository subject to change maven { url = "$artifactoryContextUrl/corda-os-maven" credentials { username = findProperty('cordaArtifactoryUsername') ?: System.getenv('CORDA_ARTIFACTORY_USERNAME') password = findProperty('cordaArtifactoryPassword') ?: System.getenv('CORDA_ARTIFACTORY_PASSWORD') } } // Provides the combined-worker Jars // These will be made publicly available. // Final location to be decided. maven { url = "$artifactoryContextUrl/corda-ent-maven-unstable-local" credentials { username = findProperty('cordaArtifactoryUsername') ?: System.getenv('CORDA_ARTIFACTORY_USERNAME') password = findProperty('cordaArtifactoryPassword') ?: System.getenv('CORDA_ARTIFACTORY_PASSWORD') } } maven { url = "$artifactoryContextUrl/corda-ent-maven" credentials { username = findProperty('cordaArtifactoryUsername') ?: System.getenv('CORDA_ARTIFACTORY_USERNAME') password = findProperty('cordaArtifactoryPassword') ?: System.getenv('CORDA_ARTIFACTORY_PASSWORD') } } maven { url = "$artifactoryContextUrl/engineering-tools-maven-unstable" credentials { username = findProperty('cordaArtifactoryUsername') ?: System.getenv('CORDA_ARTIFACTORY_USERNAME') password = findProperty('cordaArtifactoryPassword') ?: System.getenv('CORDA_ARTIFACTORY_PASSWORD') } } } // Declare dependencies for the modules we will use. // A cordaProvided declaration is required for anything that we use that the Corda API provides. // This is required to allow us to build CorDapp modules as OSGi bundles that CPI and CPB files are built on. dependencies { // We need a version of kotlin-stdlib-jdk8 built as an OSGi bundle, this is "kotlin-stdlib-jdk8-osgi". // R3 builds kotlin-stdlib-jdk8-osgi from Kotlin's kotlin-stdlib-jdk8. // NB: // Kotlin's kotlin-osgi-bundle does not provide all of the Kotlin API that is required, // There is no kotlin-stdlib-jdk11, but one is not needed even though we are targetting Java 11. cordaProvided 'net.corda.kotlin:kotlin-stdlib-jdk8-osgi' // Declare a "platform" so that we use the correct set of dependency versions for the version of the // Corda API specified. cordaProvided platform("net.corda:corda-api:$cordaApiVersion") // If using transistive dependencies this will provide most of Corda-API: // cordaProvided 'net.corda:corda-application' // Alternatively we can explicitly specify all our Corda-API dependencies: cordaProvided 'net.corda:corda-base' cordaProvided 'net.corda:corda-application' cordaProvided 'net.corda:corda-crypto' cordaProvided 'net.corda:corda-membership' // cordaProvided 'net.corda:corda-persistence' cordaProvided 'net.corda:corda-serialization' // Not yet fully implemented: // cordaProvided 'net.corda:corda-ledger' // The CorDapp uses the slf4j logging framework. Corda-API provides this so we need a 'cordaProvided' declaration. cordaProvided 'org.slf4j:slf4j-api' // Dependencies Required By Test Tooling testImplementation "net.corda:corda-simulator-api:$simulatorVersion" testRuntimeOnly "net.corda:corda-simulator-runtime:$simulatorVersion" // 3rd party libraries // Required testImplementation "org.slf4j:slf4j-simple:2.0.0" testImplementation "org.junit.jupiter:junit-jupiter:$junitVersion" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitVersion" // Optional but used by exmaple tests. testImplementation "org.mockito:mockito-core:$mockitoVersion" testImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion" testImplementation "org.hamcrest:hamcrest-library:$hamcrestVersion" } test { useJUnitPlatform() } publishing { publications { maven(MavenPublication) { artifactId "corda-CSDE-java-sample" groupId project.group artifact jar } } }