mirror of
https://github.com/corda/corda.git
synced 2024-12-21 05:53:23 +00:00
d8eb117104
Build command that would fail every time: “./gradlew clean build slowIntegrationTest”. Notes: The evaluationDependsOn lines inside the build.gradle file under the irs-demo folder where moved above the dependencies for best practices and to avoid weird errors. The archiveClassifier added to the build.gradle file under irs-demo/web folder is the actual fix. The archive classifier accepts a string that is appended to the jar file. By changing the filename of the jar, Boot Spring is prevented from overwriting the jar and causing build issues.
174 lines
5.3 KiB
Groovy
174 lines
5.3 KiB
Groovy
import java.nio.charset.StandardCharsets
|
|
import java.nio.file.Files
|
|
import org.yaml.snakeyaml.DumperOptions
|
|
|
|
buildscript {
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
dependencies {
|
|
classpath "org.yaml:snakeyaml:1.24"
|
|
}
|
|
}
|
|
|
|
plugins {
|
|
id 'com.craigburke.client-dependencies' version '1.4.0'
|
|
id 'io.spring.dependency-management'
|
|
id 'org.springframework.boot'
|
|
}
|
|
|
|
group = "${parent.group}.irs-demo"
|
|
|
|
dependencyManagement {
|
|
dependencies {
|
|
dependency "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
|
|
dependency "org.apache.logging.log4j:log4j-core:$log4j_version"
|
|
dependency "org.apache.logging.log4j:log4j-api:$log4j_version"
|
|
}
|
|
}
|
|
|
|
clientDependencies {
|
|
registry 'realBower', type:'bower', url:'https://registry.bower.io'
|
|
realBower {
|
|
"angular"("1.5.8")
|
|
"jquery"("^3.0.0")
|
|
"angular-route"("1.5.8")
|
|
"lodash"("^4.13.1")
|
|
"angular-fcsa-number"("^1.5.3")
|
|
"jquery.maskedinput"("^1.4.1")
|
|
"requirejs"("^2.2.0")
|
|
"semantic-ui"("^2.2.2", into: "semantic")
|
|
}
|
|
|
|
// put the JS dependencies into src directory so it can easily be referenced
|
|
// from HTML files in webapp frontend, useful for testing/development
|
|
// Note that this dir is added to .gitignore
|
|
installDir = 'src/main/resources/static/js/bower_components'
|
|
}
|
|
|
|
// Spring Boot plugin adds a numerous hardcoded dependencies in the version much lower then Corda expects
|
|
// causing the problems in runtime. Those can be changed by manipulating above properties
|
|
// See https://github.com/spring-gradle-plugins/dependency-management-plugin/blob/master/README.md#changing-the-value-of-a-version-property
|
|
ext['artemis.version'] = artemis_version
|
|
ext['hibernate.version'] = hibernate_version
|
|
ext['jackson.version'] = jackson_version
|
|
|
|
apply plugin: 'kotlin'
|
|
apply plugin: 'kotlin-spring'
|
|
apply plugin: 'eclipse'
|
|
apply plugin: 'project-report'
|
|
apply plugin: 'application'
|
|
|
|
configurations {
|
|
demoArtifacts.extendsFrom testRuntime
|
|
}
|
|
|
|
dependencies {
|
|
compile('org.springframework.boot:spring-boot-starter-web') {
|
|
exclude module: "spring-boot-starter-logging"
|
|
exclude module: "logback-classic"
|
|
}
|
|
compile('org.springframework.boot:spring-boot-starter-log4j2')
|
|
runtimeOnly("org.apache.logging.log4j:log4j-web:$log4j_version")
|
|
compile("com.fasterxml.jackson.module:jackson-module-kotlin:$jackson_version")
|
|
compile project(":client:rpc")
|
|
compile project(":client:jackson")
|
|
compile project(":finance:workflows")
|
|
// TODO In the future remove -irs bit from the directory name. Currently it clashes with :finance:workflows (same for contracts).
|
|
compile project(":samples:irs-demo:cordapp:workflows-irs")
|
|
|
|
testCompile project(":test-utils")
|
|
testCompile project(path: ":samples:irs-demo:cordapp:workflows-irs", configuration: "demoArtifacts")
|
|
|
|
// JOpt: for command line flags.
|
|
compile "net.sf.jopt-simple:jopt-simple:$jopt_simple_version"
|
|
|
|
testCompile('org.springframework.boot:spring-boot-starter-test') {
|
|
exclude module: "spring-boot-starter-logging"
|
|
exclude module: "logback-classic"
|
|
}
|
|
}
|
|
|
|
jar {
|
|
from sourceSets.main.output
|
|
dependsOn clientInstall
|
|
archiveClassifier = 'thin'
|
|
}
|
|
|
|
def docker_dir = file("$project.buildDir/docker")
|
|
|
|
task deployWebapps(type: Copy, dependsOn: ['jar', 'bootRepackage']) {
|
|
ext.webappDir = file("build/webapps")
|
|
|
|
from(jar.outputs)
|
|
from("src/test/resources/scripts/") {
|
|
filter { it
|
|
.replace('#JAR_PATH#', jar.archiveName)
|
|
.replace('#DIR#', ext.webappDir.getAbsolutePath())
|
|
}
|
|
}
|
|
into ext.webappDir
|
|
}
|
|
|
|
task demoJar(type: Jar) {
|
|
classifier "test"
|
|
from sourceSets.test.output
|
|
}
|
|
|
|
artifacts {
|
|
demoArtifacts demoJar
|
|
}
|
|
|
|
task createDockerfile(type: com.bmuschko.gradle.docker.tasks.image.Dockerfile, dependsOn: [bootRepackage]) {
|
|
destFile = file("$docker_dir/Dockerfile")
|
|
|
|
from 'azul/zulu-openjdk-alpine:8u152'
|
|
copyFile jar.archiveName, "/opt/irs/web/"
|
|
workingDir "/opt/irs/web/"
|
|
defaultCommand "sh", "-c", "java -Dcorda.host=\$CORDA_HOST -jar ${jar.archiveName}"
|
|
}
|
|
|
|
task prepareDockerDir(type: Copy, dependsOn: [bootRepackage, createDockerfile]) {
|
|
from jar
|
|
into docker_dir
|
|
}
|
|
|
|
task generateDockerCompose(dependsOn: [prepareDockerDir]) {
|
|
|
|
def outFile = new File(project.buildDir, "docker-compose.yml")
|
|
|
|
ext['dockerComposePath'] = outFile
|
|
|
|
doLast {
|
|
def dockerComposeObject = [
|
|
"version": "3",
|
|
"services": [
|
|
"web-a": [
|
|
"build": "$docker_dir".toString(),
|
|
"environment": [
|
|
"CORDA_HOST": "bank-a:10003"
|
|
],
|
|
"ports": ["8080"]
|
|
],
|
|
"web-b": [
|
|
"build": "$docker_dir".toString(),
|
|
"environment": [
|
|
"CORDA_HOST": "bank-b:10003"
|
|
],
|
|
"ports": ["8080"]
|
|
]
|
|
]
|
|
]
|
|
|
|
def options = new org.yaml.snakeyaml.DumperOptions()
|
|
options.indent = 2
|
|
options.defaultFlowStyle = DumperOptions.FlowStyle.BLOCK
|
|
|
|
def dockerComposeContent = new org.yaml.snakeyaml.Yaml(options).dump(dockerComposeObject)
|
|
|
|
Files.write(outFile.toPath(), dockerComposeContent.getBytes(StandardCharsets.UTF_8))
|
|
}
|
|
|
|
outputs.file(outFile)
|
|
}
|