corda/samples/simm-valuation-demo/contracts-states/build.gradle

133 lines
3.9 KiB
Groovy

apply plugin: 'org.jetbrains.kotlin.jvm'
apply plugin: 'net.corda.plugins.cordapp'
def javaHome = System.getProperty('java.home')
def shrinkJar = file("$buildDir/libs/${project.name}-${project.version}-tiny.jar")
import net.corda.plugins.SignJar
import proguard.gradle.ProGuardTask
import java.security.MessageDigest
import java.security.NoSuchAlgorithmException
static String sha256(File jarFile) throws FileNotFoundException, NoSuchAlgorithmException {
InputStream input = new FileInputStream(jarFile)
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256")
byte[] buffer = new byte[8192]
int bytesRead
while ((bytesRead = input.read(buffer)) != -1) {
digest.update(buffer, 0, bytesRead)
}
return digest.digest().encodeHex().toString()
} finally {
input.close()
}
}
cordapp {
targetPlatformVersion = corda_platform_version.toInteger()
minimumPlatformVersion 1
signing {
// Cordapp is signed after the "shrink" task.
enabled false
}
sealing {
// Cannot seal JAR because other module also defines classes in the package net.corda.vega.analytics
enabled false
}
contract {
name "net/corda/vega/contracts"
versionId 1
vendor "R3"
licence "Open Source (Apache 2)"
}
}
configurations {
shrinkArtifacts
}
dependencies {
// The SIMM demo CorDapp depends upon Cash CorDapp features
cordapp project(':finance:contracts')
// Corda integration dependencies
cordaProvided project(':core')
// Cordapp dependencies
// Specify your cordapp's dependencies below, including dependent cordapps
implementation "com.opengamma.strata:strata-product:$strata_version"
implementation "com.opengamma.strata:strata-market:$strata_version"
}
configurations.cordapp.canBeResolved = true
tasks.register('generateDependencies') {
dependsOn project(':finance:contracts').tasks.jar
def cordappDependencies = file("${sourceSets.main.output.resourcesDir}/META-INF/Cordapp-Dependencies")
inputs.files(configurations.cordapp)
outputs.files(cordappDependencies)
doLast {
cordappDependencies.newWriter().withWriter { writer ->
configurations.cordapp.forEach { cordapp ->
writer << sha256(cordapp) << System.lineSeparator()
}
}
}
}
processResources.finalizedBy generateDependencies
jar.dependsOn generateDependencies
jar {
// Test CorDapp filters out *-tests.jar. We only want the shrinked jar not this one.
archiveClassifier = 'tests'
}
tasks.register('shrink', ProGuardTask) {
injars jar
outjars shrinkJar
libraryjars "$javaHome/jmods"
configurations.runtimeClasspath.forEach {
libraryjars it.path, filter: '!META-INF/versions/**'
}
dontwarn 'afu.org.checkerframework.**'
dontwarn 'co.paralleluniverse.**'
dontwarn 'org.checkerframework.**'
dontwarn 'org.joda.**'
dontnote
// We need to preserve our CorDapp's own directory structure so that Corda
// can find the contract classes.
keepdirectories 'net/corda/**'
keepattributes '*'
dontobfuscate
dontoptimize
verbose
// These are our CorDapp classes, so don't change these.
keep 'class net.corda.vega.** { *; }', includedescriptorclasses: true
// Until CorDapps are isolated from each other, we need to ensure that the
// versions of the classes that this CorDapp needs are still usable by other
// CorDapps. Unfortunately, this means that we cannot shrink them as much as
// we'd like to.
keepclassmembers 'class com.opengamma.strata.** { *; }', includedescriptorclasses: true
keepclassmembers 'class com.google.** { *; }', includedescriptorclasses: true
keepclassmembers 'class org.joda.** { *; }', includedescriptorclasses: true
}
tasks.register('sign', SignJar) {
inputJars shrink
}
jar.finalizedBy shrink
shrink.finalizedBy sign
artifacts {
shrinkArtifacts shrinkJar
}