forked from AY2324S1-CS2103-W14-3/tp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
107 lines (89 loc) · 3.73 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
plugins {
// application includes java
id 'application'
id 'checkstyle'
id 'jacoco'
id 'com.github.johnrengelman.shadow' version '7.1.2'
}
repositories {
mavenCentral()
}
dependencies {
String versionJUnit = '5.10.0'
/* NOTE
* Upgrading Jackson to 2.15.2 causes some tests to fail, as saving Config's
* Path results in a full path instead of the original relative one.
*/
String versionJackson = '2.7.0'
/* NOTE
* We stay on JavaFX 17 instead of 21, for better Java 11 compatibility in
* general.
*
* The documentation states that Java 17 is required for either, but Gluon's
* download page states otherwise:
* • https://openjfx.io/openjfx-docs/
* • https://gluonhq.com/products/javafx/
*/
String versionJavaFx = '17.0.9'
implementation group: 'org.openjfx', name: 'javafx-base', version: versionJavaFx, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-base', version: versionJavaFx, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-base', version: versionJavaFx, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-controls', version: versionJavaFx, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-controls', version: versionJavaFx, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-controls', version: versionJavaFx, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: versionJavaFx, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: versionJavaFx, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: versionJavaFx, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: versionJavaFx, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: versionJavaFx, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: versionJavaFx, classifier: 'linux'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: versionJackson
implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: versionJackson
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: versionJUnit
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: versionJUnit
}
// https://docs.gradle.org/current/userguide/img/javaPluginTasks.png
defaultTasks 'clean', 'test'
java {
// targetCompatibility also defaults to sourceCompatibility
sourceCompatibility JavaVersion.VERSION_11
}
application {
mainClass = 'swe.context.Main'
}
clean {
delete './data/'
delete './settings.json'
delete fileTree('./') { include '*.log.*' }
}
run {
enableAssertions true
}
test {
useJUnitPlatform()
finalizedBy jacocoTestReport
}
task coverage(type: JacocoReport) {
// "Task ':coverage' uses this output of task ':test' without declaring an
// explicit or implicit dependency. This can lead to incorrect results being
// produced, depending on what order the tasks are executed."
dependsOn test
sourceDirectories.from files(sourceSets.main.allSource.srcDirs)
classDirectories.from files(sourceSets.main.output)
executionData.from files(jacocoTestReport.executionData)
afterEvaluate {
classDirectories.from files(classDirectories.files.collect {
fileTree(dir: it, exclude: ['**/*.jar'])
})
}
reports {
html.required = true
xml.required = true
}
}
checkstyle {
toolVersion = '10.2'
}
shadowJar {
archiveFileName = 'context.jar'
}