mirror of
https://github.com/corda/corda.git
synced 2024-12-29 17:28:56 +00:00
133 lines
3.9 KiB
Groovy
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
|
|
}
|