-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
153 lines (127 loc) · 3.93 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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
plugins {
// Build "shadow" JARs for deployment
id 'com.github.johnrengelman.shadow'
// Apply the java plugin to add support for Java
id 'java'
// Apply the application plugin to add support for building a CLI application.
id 'application'
// Lombok provides shorthand for repetitive Java tasks
id "io.freefair.lombok"
// Spotless to format code easily
id "com.diffplug.spotless"
// ./gradlew clean test jacocoTestReport
// to get a junit coverage report
id 'jacoco'
}
repositories {
mavenCentral()
jcenter()
maven {
name 'm2-dv8tion'
url 'https://m2.dv8tion.net/releases'
}
}
dependencies {
// log4j so JDA can log
implementation 'org.apache.logging.log4j:log4j-api:_'
implementation 'org.apache.logging.log4j:log4j-core:_'
implementation 'org.slf4j:slf4j-simple:_'
// sparkjava for simple HTTP serving
implementation "com.sparkjava:spark-core:_"
// Use JUnit Jupiter API for testing.
testImplementation Testing.junit.api
// Use JUnit Jupiter Engine for testing.
testRuntimeOnly Testing.junit.engine
// Annotations such as Nullable
implementation 'com.google.code.findbugs:annotations:_'
// Force JRE Guava to work around issues with Truth
testImplementation "com.google.guava:guava:_"
// Fluent assertions for testing
testImplementation 'com.google.truth:truth:_'
// JDA for talking to Discord
implementation ('net.dv8tion:JDA:_') {
// Remove the next line if your bot needs voice support!
exclude module: "opus-java"
}
// MongoDB client
implementation 'org.mongodb:mongodb-driver:3.12.10'
}
application {
// Define the main class for the application.
mainClassName = 'edu.northeastern.cs5500.starterbot.App'
}
check.dependsOn jacocoTestCoverageVerification
def excluded_classes = [
// No need to compute coverage for the professor's code
'edu.northeastern.cs5500.starterbot.App',
'edu.northeastern.cs5500.starterbot.repository.InMemoryRepository',
'edu.northeastern.cs5500.starterbot.repository.MongoDBRepository',
'edu.northeastern.cs5500.starterbot.service.MongoDBService',
'edu.northeastern.cs5500.starterbot.listeners.Welcome',
// All of these classes must have coverage by the end of the course!
// Make sure to remove them once you have tests!
'edu.northeastern.cs5500.starterbot.listeners.MessageListener',
'edu.northeastern.cs5500.starterbot.listeners.commands.CheckInPersonOfficeHourCommand',
'edu.northeastern.cs5500.starterbot.listeners.commands.GetAvailableCommand',
'edu.northeastern.cs5500.starterbot.listeners.commands.GetScheduleCommand',
'edu.northeastern.cs5500.starterbot.listeners.commands.RegisterCommand',
]
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
counter = 'LINE'
value = 'COVEREDRATIO'
minimum = 0.4
}
element = 'CLASS'
excludes = excluded_classes
}
rule {
limit {
counter = 'BRANCH'
value = 'COVEREDRATIO'
minimum = 0.4
}
element = 'CLASS'
excludes = excluded_classes
}
rule {
limit {
counter = 'CLASS'
value = 'COVEREDRATIO'
minimum = 0.4
}
element = 'CLASS'
excludes = excluded_classes
}
}
}
test {
// Use junit platform for unit tests
useJUnitPlatform()
}
// Target Java 1.8 - make sure system.properties matches this as well
sourceCompatibility = 1.8
targetCompatibility = 1.8
sourceSets {
main {
java {
srcDirs 'src/main/java'
srcDirs 'build/generated/sources/annotationProcessor/java/main'
}
}
}
spotless {
format 'misc', {
target '**/*.gradle', '**/*.md', '**/.gitignore'
targetExclude 'build/**'
trimTrailingWhitespace()
indentWithSpaces()
endWithNewline()
}
java {
targetExclude 'build/**'
googleJavaFormat().aosp()
}
}