-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
130 lines (118 loc) · 4.38 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
plugins {
id 'org.springframework.boot' version '2.7.3'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'jacoco'
id "org.sonarqube" version "3.4.0.2513"
}
group = 'com.anthony'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
jacoco {
toolVersion = "0.8.8"
}
test {
jacoco {
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
includes = ["com.anthony.*"]
classDumpDir = file("$buildDir/jacoco/classpathdumps")
}
useJUnitPlatform()
finalizedBy jacocoTestReport // report is always generated after tests run
}
def jacocoExclusions = [
'**/configuration/exception_handler/**',
'**/configuration/interceptor_log/**',
'**/*ProductApplication.java'
]
//Generates code coverage report for the test task.
jacocoTestReport {
reports {
xml.enabled true
csv.enabled true
html.destination file("${buildDir}/reports/jacocoHtml")
}
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.collect {
fileTree(dir: it,
exclude: jacocoExclusions
)
}))
}
doLast {// print the report url for easier access
println("file://${buildDir}/reports/jacocoHtml/index.html")
}
dependsOn test // tests are required to run before generating the report
}
//Verifies code coverage metrics based on specified rules for the test task.
jacocoTestCoverageVerification {
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.collect {
fileTree(dir: it,
exclude: jacocoExclusions
)
}))
}
violationRules {
rule {
excludes = jacocoExclusions
limit {
minimum = 0.90
}
}
}
}
sonarqube {
properties {
property "sonar.host.url", "http://localhost:9000"
property "sonar.login", "855dc43b0441a11a57af9c73cc6ade7f4a5949a7"
property "sonar.exclusions", jacocoExclusions
property "sonar.projectKey", "$project.group:$project.name"
property "sonar.qualitygate.wait", true
property "sonar.verbose", true
}
}
tasks.named('sonarqube').configure {
dependsOn test
}
repositories {
mavenCentral()
}
//Spring Boot by default generates plain.jar file. with this cmd I can remove it
jar {
enabled = false
}
dependencies {
// <!-- Setup Spring Boot -->
implementation 'org.springframework.boot:spring-boot-starter-web'
// <!-- Validation for Request -->
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation'
// <!-- JPA Data (Repositories, Entities, Hibernate, etc..) -->
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa'
// <!-- Starter for using Spring Security -->
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-security'
// <!-- Database embedded -->
implementation group: 'com.h2database', name: 'h2'
// <!-- Start for international I18n -->
implementation group: 'org.apache.commons', name: 'commons-lang3'
implementation group: 'commons-io', name: 'commons-io', version: '2.11.0'
// <!-- This annotation is for get, setter, constructor -->
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// <!-- This annotation is useful for cast Object to Another -->
implementation 'org.mapstruct:mapstruct:1.5.2.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.2.Final'
// <!-- Starter for UnitTest -->
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation group: 'org.springframework.security', name: 'spring-security-test', version: '5.7.3'
testImplementation group: 'org.mockito', name: 'mockito-inline', version: '2.7.21'
implementation 'org.springdoc:springdoc-openapi-ui:1.6.11'
// <!-- JSON Web Token Support -->
implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.5'
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly('io.jsonwebtoken:jjwt-orgjson:0.11.5') {
exclude group: 'org.json', module: 'json' //provided by Android natively
}
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
}