-
Notifications
You must be signed in to change notification settings - Fork 16
/
build.gradle
139 lines (109 loc) · 3.46 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import org.apache.tools.ant.taskdefs.condition.Os
description = "FormKiQ Core - WebSocket"
apply plugin: 'distribution'
sourceSets {
integration {
java.srcDir "$projectDir/src/integration/java"
resources.srcDir "$projectDir/src/integration/resources"
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
}
}
configurations {
integrationImplementation.extendsFrom testImplementation
integrationRuntime.extendsFrom testRuntime
}
def getCmd() {
String os = System.getProperty("os.name").toLowerCase()
return os.contains("win") ? "cmd" : "bash"
}
def getCmdParam() {
String os = System.getProperty("os.name").toLowerCase()
return os.contains("win") ? "/c" : "-c"
}
jar.enabled = false
dependencies {
testImplementation project(':aws-sqs')
testImplementation project(':aws-ssm')
testImplementation project(':aws-cognito-identity')
testImplementation project(':aws-cognito-identityprovider')
testImplementation project(':aws-dynamodb')
testImplementation project(':dynamodb-documents')
testImplementation project(':fkq-test-utils')
testImplementation group: 'software.amazon.awssdk', name: 'dynamodb', version: '2.23.12'
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version:'5.10.1'
testImplementation group: 'com.google.code.gson', name: 'gson', version: '2.10.1'
testImplementation group: 'org.java-websocket', name: 'Java-WebSocket', version: '1.5.3'
testImplementation group: 'org.slf4j', name: 'slf4j-simple', version: '2.0.7'
}
test {
failFast = true
useJUnitPlatform()
}
task integrationTest(type: Test) {
testClassesDirs = sourceSets.integration.output.classesDirs
classpath = sourceSets.integration.runtimeClasspath
useJUnitPlatform()
}
task npmInstall {
dependsOn processResources
doLast {
delete("${buildDir}/resources/main/js/websocket-api.zip")
exec {
workingDir "${buildDir}/resources/main/js"
commandLine getCmd(), getCmdParam(), "npm install"
}
exec {
workingDir "${buildDir}/resources/main/js"
commandLine getCmd(), getCmdParam(), "npm run pack"
}
}
}
jar.dependsOn npmInstall
task npmtest {
onlyIf { !Os.isFamily(Os.FAMILY_WINDOWS) }
inputs.dir("src/main/resources/js")
outputs.dir("${buildDir}/resources/main/js/coverage")
doLast {
exec {
workingDir "${buildDir}/resources/main/js"
commandLine getCmd(), getCmdParam(), "npm test"
}
}
}
npmtest.dependsOn compileIntegrationJava,checkstyleIntegration,spotbugsIntegration
task buildTemplate {
inputs.files("src/main/resources/cloudformation/template.yaml")
outputs.files("${buildDir}/distributions/websocket-api/template.yaml")
doLast {
copy {
from layout.buildDirectory.dir("${buildDir}/../src/main/resources/cloudformation")
include "template*"
into "${buildDir}/distributions/websocket-api"
}
}
}
task unzipPack(type: Copy) {
dependsOn npmInstall
def zipFile = file("${buildDir}/resources/main/js/websocket-api.zip")
def outputDir = file("${buildDir}/pack")
from zipTree(zipFile)
into outputDir
}
npmtest.dependsOn npmInstall
test.dependsOn npmtest
distZip.dependsOn buildTemplate, npmInstall, unzipPack
tasks.distTar.enabled = false
distZip {
archiveFileName = "websocket-api/websocket-api.zip"
}
distributions {
main {
contents {
from("${buildDir}/pack") {
include "**/**"
}
into '/'
}
}
}