mirror of
https://github.com/corda/corda.git
synced 2024-12-19 04:57:58 +00:00
d883b3f134
First working Exposed-assisted persistent wallet Cleaned up Exposed-based persistent wallet Cleaned up warnings Fixed up some generic types Improved comments Fix up TODO comment Hikari and config integration Fix existing tests Clean up after looking at PR Clean up commented out lines Fix initialisation of IRS demo leaving database open Fix up after rebase Review feedback. Main change is lazy wallet iteration. Rebased and incorporated config changes. Use standardised config loading. Make wallet cash test use persistent wallet. Added test to ensure wallet retains state in database across instance creation. Tidy up whitespace and fix bug in test.
241 lines
7.6 KiB
Groovy
241 lines
7.6 KiB
Groovy
buildscript {
|
|
ext.kotlin_version = '1.0.3'
|
|
ext.quasar_version = '0.7.5'
|
|
ext.asm_version = '0.5.3'
|
|
ext.artemis_version = '1.3.0'
|
|
ext.jackson_version = '2.8.0.rc2'
|
|
ext.jetty_version = '9.3.9.v20160517'
|
|
ext.jersey_version = '2.23.1'
|
|
ext.jolokia_version = '2.0.0-M1'
|
|
ext.assertj_version = '3.5.1'
|
|
ext.log4j_version = '2.6.2'
|
|
ext.bouncycastle_version = '1.54'
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
jcenter()
|
|
}
|
|
dependencies {
|
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
|
|
// Can run 'gradle dependencyUpdates' to find new versions of things.
|
|
classpath 'com.github.ben-manes:gradle-versions-plugin:0.12.0'
|
|
}
|
|
}
|
|
|
|
plugins {
|
|
// TODO The capsule plugin requires the newer DSL plugin block.It would be nice if we could unify all the plugins into one style,
|
|
// but the DSL has some restrictions e.g can't be used on the allprojects section. So we should revisit this if there are improvements in Gradle.
|
|
id "us.kirchmeier.capsule" version "1.0.2"
|
|
}
|
|
|
|
apply plugin: 'kotlin'
|
|
apply plugin: 'application'
|
|
apply plugin: 'project-report'
|
|
apply plugin: QuasarPlugin
|
|
apply plugin: 'com.github.ben-manes.versions'
|
|
|
|
allprojects {
|
|
apply plugin: 'java'
|
|
apply plugin: 'jacoco'
|
|
|
|
sourceCompatibility = 1.8
|
|
targetCompatibility = 1.8
|
|
|
|
tasks.withType(JavaCompile) {
|
|
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
|
|
}
|
|
|
|
// Our version: bump this on release.
|
|
group 'com.r3corda'
|
|
version '0.3-SNAPSHOT'
|
|
}
|
|
|
|
repositories {
|
|
mavenLocal()
|
|
mavenCentral()
|
|
maven {
|
|
url 'http://oss.sonatype.org/content/repositories/snapshots'
|
|
}
|
|
jcenter()
|
|
maven {
|
|
url 'https://dl.bintray.com/kotlin/exposed'
|
|
}
|
|
}
|
|
|
|
sourceSets {
|
|
integrationTest {
|
|
kotlin {
|
|
compileClasspath += main.output + test.output
|
|
runtimeClasspath += main.output + test.output
|
|
srcDir file('src/integration-test/kotlin')
|
|
}
|
|
}
|
|
main {
|
|
resources {
|
|
srcDir "config/dev"
|
|
}
|
|
}
|
|
test {
|
|
resources {
|
|
srcDir "config/test"
|
|
}
|
|
}
|
|
}
|
|
|
|
//noinspection GroovyAssignabilityCheck
|
|
configurations {
|
|
// we don't want isolated.jar in classPath, since we want to test jar being dynamically loaded as an attachment
|
|
runtime.exclude module: 'isolated'
|
|
|
|
integrationTestCompile.extendsFrom testCompile
|
|
integrationTestRuntime.extendsFrom testRuntime
|
|
}
|
|
|
|
// This is required for quasar. I think.
|
|
applicationDefaultJvmArgs = ["-javaagent:${configurations.quasar.singleFile}"]
|
|
// Needed by the :startScripts task
|
|
mainClassName = 'com.r3corda.demos.TraderDemoKt'
|
|
|
|
// To find potential version conflicts, run "gradle htmlDependencyReport" and then look in
|
|
// build/reports/project/dependencies/index.html for green highlighted parts of the tree.
|
|
|
|
dependencies {
|
|
compile project(':node')
|
|
|
|
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
|
|
compile "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
|
|
compile "org.jetbrains.kotlinx:kotlinx-support-jdk8:0.2"
|
|
compile 'com.squareup.okhttp3:okhttp:3.3.1'
|
|
|
|
// Unit testing helpers.
|
|
testCompile 'junit:junit:4.12'
|
|
testCompile 'org.assertj:assertj-core:3.4.1'
|
|
testCompile 'com.pholser:junit-quickcheck-core:0.6'
|
|
|
|
// Integration test helpers
|
|
integrationTestCompile 'junit:junit:4.12'
|
|
integrationTestCompile 'org.assertj:assertj-core:${assertj_version}'
|
|
}
|
|
|
|
// Package up the demo programs.
|
|
task getRateFixDemo(type: CreateStartScripts) {
|
|
mainClassName = "com.r3corda.demos.RateFixDemoKt"
|
|
applicationName = "get-rate-fix"
|
|
defaultJvmOpts = ["-javaagent:${configurations.quasar.singleFile}"]
|
|
outputDir = new File(project.buildDir, 'scripts')
|
|
classpath = jar.outputs.files + project.configurations.runtime
|
|
}
|
|
|
|
task getIRSDemo(type: CreateStartScripts) {
|
|
mainClassName = "com.r3corda.demos.IRSDemoKt"
|
|
applicationName = "irsdemo"
|
|
defaultJvmOpts = ["-javaagent:${configurations.quasar.singleFile}"]
|
|
outputDir = new File(project.buildDir, 'scripts')
|
|
classpath = jar.outputs.files + project.configurations.runtime
|
|
}
|
|
|
|
task getTraderDemo(type: CreateStartScripts) {
|
|
mainClassName = "com.r3corda.demos.TraderDemoKt"
|
|
applicationName = "trader-demo"
|
|
defaultJvmOpts = ["-javaagent:${configurations.quasar.singleFile}"]
|
|
outputDir = new File(project.buildDir, 'scripts')
|
|
classpath = jar.outputs.files + project.configurations.runtime
|
|
}
|
|
|
|
// Force windows script classpath to wildcard path to avoid the 'Command Line Is Too Long' issues
|
|
// with generated scripts. Include Jolokia .war explicitly as this isn't picked up by wildcard
|
|
tasks.withType(CreateStartScripts) {
|
|
doLast {
|
|
windowsScript.text = windowsScript
|
|
.readLines()
|
|
.collect { line -> line.replaceAll(~/^set CLASSPATH=.*$/, 'set CLASSPATH=%APP_HOME%/lib/*;%APP_HOME%/lib/jolokia-agent-war-'+project.ext.jolokia_version+'.war') }
|
|
.join('\r\n')
|
|
}
|
|
}
|
|
|
|
task integrationTest(type: Test) {
|
|
testClassesDir = sourceSets.integrationTest.output.classesDir
|
|
classpath = sourceSets.integrationTest.runtimeClasspath
|
|
}
|
|
test.finalizedBy(integrationTest)
|
|
|
|
|
|
task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) {
|
|
dependsOn = subprojects.test
|
|
additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs)
|
|
sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs)
|
|
classDirectories = files(subprojects.sourceSets.main.output)
|
|
executionData = files(subprojects.jacocoTestReport.executionData)
|
|
reports {
|
|
html.enabled = true
|
|
xml.enabled = true
|
|
csv.enabled = false
|
|
}
|
|
onlyIf = {
|
|
true
|
|
}
|
|
doFirst {
|
|
executionData = files(executionData.findAll {
|
|
it.exists()
|
|
})
|
|
}
|
|
}
|
|
|
|
tasks.withType(Test) {
|
|
reports.html.destination = file("${reporting.baseDir}/${name}")
|
|
}
|
|
|
|
quasarScan.dependsOn('classes', 'core:classes', 'contracts:classes', 'node:classes')
|
|
|
|
applicationDistribution.into("bin") {
|
|
from(getRateFixDemo)
|
|
from(getIRSDemo)
|
|
from(getTraderDemo)
|
|
fileMode = 0755
|
|
}
|
|
|
|
task createCapsule(type: FatCapsule, dependsOn: 'quasarScan') {
|
|
applicationClass 'com.r3corda.node.MainKt'
|
|
|
|
capsuleManifest {
|
|
appClassPath = ["jolokia-agent-war-${project.ext.jolokia_version}.war"]
|
|
systemProperties['log4j.configuration'] = 'log4j2.xml'
|
|
javaAgents = ["quasar-core-${quasar_version}-jdk8.jar"]
|
|
minJavaVersion = '1.8.0'
|
|
}
|
|
}
|
|
|
|
task createStandalone(dependsOn: 'createCapsule') << {
|
|
copy {
|
|
from createCapsule.outputs.getFiles()
|
|
from 'config/dev/nameservernode.conf'
|
|
into "${buildDir}/standalone/nameserver"
|
|
rename 'nameservernode.conf', 'node.conf'
|
|
}
|
|
|
|
copy {
|
|
from createCapsule.outputs.getFiles()
|
|
from 'config/dev/generalnodea.conf'
|
|
into "${buildDir}/standalone/nodea"
|
|
rename 'generalnodea.conf', 'node.conf'
|
|
}
|
|
|
|
copy {
|
|
from createCapsule.outputs.getFiles()
|
|
from 'config/dev/generalnodeb.conf'
|
|
into "${buildDir}/standalone/nodeb"
|
|
rename 'generalnodeb.conf', 'node.conf'
|
|
}
|
|
|
|
delete("${buildDir}/standalone/runstandalone")
|
|
def jarName = createCapsule.outputs.getFiles().getSingleFile().getName()
|
|
copy {
|
|
from "buildSrc/scripts/runstandalone"
|
|
filter { String line -> line.replace("JAR_NAME", jarName) }
|
|
filter(org.apache.tools.ant.filters.FixCrLfFilter.class, eol: org.apache.tools.ant.filters.FixCrLfFilter.CrLf.newInstance("lf"))
|
|
into "${buildDir}/standalone"
|
|
}
|
|
|
|
} |