mirror of
https://github.com/corda/corda.git
synced 2024-12-22 06:17:55 +00:00
d2ef16cbfd
* CID-251 - Deterministic JVM * CID-251 - Add DJVM documentation * CID-251 - Address review comments from @chrisr3 * CID-251 - Address further review comments from @chrisr3 * CID-251 - Use shadowJar to generate fat JAR * CID-251 - Address review comments from @exFalso * CID-251 - Improve naming in ReferenceMap * CID-251 - Add test for Kotlin meta-class behaviour * CID-251 - Address review comments from @shamsasari * CID-251 - Add description of high-level flow * CID-251 - Refactoring * CID-251 - Rename package to net.corda.djvm * CID-251 - Include deterministic-rt.jar as runtime dependency * CID-251 - Add Gradle task for generating whitelist from deterministic rt.jar * CID-251 - Error messages for StackOverflow/OutOfMemory, update whitelist * CID-251 - Reduce set definition of pinned classes * CID-251 - Tidy up logic around pinned classes * CID-251 - Shade ASM dependency and split out CLI tool * CID-251 - Address review comments from @mikehearn (part 1) * CID-251 - Address review comments from @mikehearn (part 2) * CID-251 - Address review comments from @mikehearn (part 3) * CID-251 - Address review comments from @exFalso * CID-251 - Address review comments from @mikehearn (part 4) * CID-251 - Address review comments from @exFalso and @mikehearn * CID-251 - Address review comments from @mikehearn (part 5)
90 lines
2.6 KiB
Groovy
90 lines
2.6 KiB
Groovy
buildscript {
|
|
// Shaded version of ASM to avoid conflict with root project.
|
|
ext.asm_version = '6.1.1'
|
|
ext.deterministic_rt_version = '1.0-20180625.120901-7'
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
jcenter()
|
|
}
|
|
dependencies {
|
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.3'
|
|
}
|
|
}
|
|
|
|
plugins {
|
|
id 'com.github.johnrengelman.shadow' version '2.0.3'
|
|
}
|
|
|
|
dependencies {
|
|
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
|
compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
|
|
compile "org.slf4j:jul-to-slf4j:$slf4j_version"
|
|
compile "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
|
|
compile "com.jcabi:jcabi-manifests:$jcabi_manifests_version"
|
|
|
|
// ASM: byte code manipulation library
|
|
compile "org.ow2.asm:asm:$asm_version"
|
|
compile "org.ow2.asm:asm-tree:$asm_version"
|
|
compile "org.ow2.asm:asm-commons:$asm_version"
|
|
|
|
// Classpath scanner
|
|
compile "io.github.lukehutch:fast-classpath-scanner:$fast_classpath_scanner_version"
|
|
|
|
// Deterministic runtime - used in whitelist generation
|
|
runtime "net.corda:deterministic-rt:$deterministic_rt_version:api"
|
|
|
|
// Test utilities
|
|
testCompile "junit:junit:$junit_version"
|
|
testCompile "org.assertj:assertj-core:$assertj_version"
|
|
}
|
|
|
|
repositories {
|
|
mavenLocal()
|
|
mavenCentral()
|
|
maven {
|
|
url "$artifactory_contextUrl/corda-dev"
|
|
}
|
|
}
|
|
|
|
task generateWhitelist(type: JavaExec) {
|
|
// This is an example of how a whitelist can be generated from a JAR. In most applications though, it is recommended
|
|
// thet the minimal set whitelist is used.
|
|
def jars = configurations.runtime.collect {
|
|
it.toString()
|
|
}.findAll {
|
|
it.toString().contains("deterministic-rt")
|
|
}
|
|
classpath = sourceSets.main.runtimeClasspath
|
|
main = 'net.corda.djvm.tools.cli.Program'
|
|
args = ['whitelist', 'generate', '-o', 'src/main/resources/jdk8-deterministic.dat.gz'] + jars
|
|
}
|
|
|
|
jar {
|
|
manifest {
|
|
attributes(
|
|
'Automatic-Module-Name': 'net.corda.djvm'
|
|
)
|
|
}
|
|
}
|
|
|
|
shadowJar {
|
|
baseName = "djvm"
|
|
classifier = ""
|
|
exclude 'deterministic-rt*.jar'
|
|
dependencies {
|
|
exclude(dependency('com.jcabi:.*:.*'))
|
|
exclude(dependency('org.apache.*:.*:.*'))
|
|
exclude(dependency('org.jetbrains.*:.*:.*'))
|
|
exclude(dependency('org.slf4j:.*:.*'))
|
|
exclude(dependency('io.github.lukehutch:.*:.*'))
|
|
}
|
|
relocate 'org.objectweb.asm', 'djvm.org.objectweb.asm'
|
|
artifacts {
|
|
shadow(tasks.shadowJar.archivePath) {
|
|
builtBy shadowJar
|
|
}
|
|
}
|
|
}
|