-
Notifications
You must be signed in to change notification settings - Fork 3
/
build.gradle
149 lines (124 loc) · 4.92 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
plugins {
// Java 언어 지원을 위한 플러그인
id 'java'
// Spring Boot 응용 프로그램을 빌드 및 실행하기 위한 플러그인
id 'org.springframework.boot' version '3.2.1'
// Spring Boot 의존성 관리를 위한 플러그인
id 'io.spring.dependency-management' version '1.1.4'
//jacoco 플러그인
id 'jacoco'
}
// 프로젝트 그룹과 버전 설정
group = 'com'
version = '0.0.1-SNAPSHOT'
java {
// 자바 버전 호환성 설정
sourceCompatibility = '17'
}
configurations {
compileOnly {
// 컴파일 시점에만 필요한 의존성 구성
extendsFrom annotationProcessor
}
}
repositories {
// Maven 중앙 저장소에서 의존성을 가져오도록 설정
mavenCentral()
}
dependencies {
// Spring Boot 스타터 의존성들
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-data-redis-reactive'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-authorization-server'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-websocket'
implementation 'org.webjars:webjars-locator-core'
implementation 'org.webjars:sockjs-client:1.1.2'
implementation 'org.webjars:stomp-websocket:2.3.3'
implementation 'org.webjars:bootstrap:5.1.3'
implementation 'org.webjars:jquery:3.6.0'
// Thymeleaf 보안 확장
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
// Lombok 라이브러리
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// 개발 도구
developmentOnly 'org.springframework.boot:spring-boot-devtools'
// 데이터베이스 드라이버
runtimeOnly 'com.h2database:h2'
runtimeOnly 'com.mysql:mysql-connector-j'
// 테스트 의존성들
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'io.projectreactor:reactor-test'
testImplementation 'org.springframework.security:spring-security-test'
// QueryDSL
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
// JWT 처리를 위한 의존성
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'
// MapStruct 매퍼
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
implementation 'org.mapstruct:mapstruct:1.4.2.Final'
// AWS 서비스 통합
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
implementation "com.amazonaws:aws-java-sdk-s3:1.12.395"
// AsyncHttpClient 추가
implementation 'org.asynchttpclient:async-http-client:2.12.3'
// Jackson JSON 처리
implementation 'com.fasterxml.jackson.core:jackson-databind:2.16.1'
// swagger
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0'
implementation group: 'org.json', name: 'json', version: '20231013'
}
tasks.named('test') {
// JUnit 플랫폼 설정
useJUnitPlatform()
}
configurations {
compileOnly {
// 컴파일 시점에만 필요한 의존성 구성
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
configurations.all {
exclude group: 'commons-logging', module: 'commons-logging'
}
jacocoTestReport {
reports {
xml.required = false
csv.required = false
html.required = true
html.destination file("jacoco/jacocoHtml")
xml.destination file("jacoco/jacoco.xml")
}
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.collect {
fileTree(dir: it, include: '**/service/**') // 서비스 레이어만 포함
}))
}
}
jacocoTestCoverageVerification {
violationRules {
rule {
element = 'CLASS'
includes = ['**/service/**'] // 서비스 레이어에 대한 규칙 적용
limit {
counter = 'BRANCH'
value = 'COVEREDRATIO'
minimum = 0.70
}
}
}
}