-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathbuild.gradle
More file actions
158 lines (121 loc) · 5.2 KB
/
build.gradle
File metadata and controls
158 lines (121 loc) · 5.2 KB
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
154
155
156
157
158
plugins {
id 'java'
id 'org.springframework.boot' version '3.4.2'
id 'io.spring.dependency-management' version '1.1.7'
}
ext {
springCloudVersion = '2024.0.0'
}
group = 'spot'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
dependencies {
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
testImplementation 'org.springframework.security:spring-security-test'
// BASIC ⭐
// developmentOnly 'org.springframework.boot:spring-boot-devtools'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// SECURITY ⭐
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'
// DB 📦
runtimeOnly 'com.mysql:mysql-connector-j'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// 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"
// mySQL 옵티마이저와 소통을 위함
implementation group: 'com.querydsl', name: 'querydsl-sql', version: '5.0.0'
implementation group: 'com.querydsl', name: 'querydsl-sql-spring', version: '5.0.0'
// 공간 데이터 query-dsl
implementation 'com.querydsl:querydsl-spatial:5.0.0'
// Map Struct ⭐
implementation group: 'org.mapstruct', name: 'mapstruct', version: '1.5.5.Final' // MapStruct 사용을 위한 의존성 라이브러리
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final' // MapStruct는 컴파일 타임에 인터페이스의 구현체를 만들어서 build에 올림. 이를 위한 Processor 라이브러리
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0' // 컴파일 시간에 구현체를 만드는 Lombok과 컴파일 타임에 충돌이 날 수 있음. 따라서 순서 조정 (Lombok 먼저, MapStruct 다음에)
// Logging ⭐
implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.16'
// feign Client ⭐
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
testImplementation 'com.github.tomakehurst:wiremock-jre8:2.35.0'
// TEST ⭐
testImplementation 'org.springframework.boot:spring-boot-starter-test'
runtimeOnly 'com.h2database:h2'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
testImplementation 'org.projectlombok:lombok:1.18.28'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.28'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
// SWAGGER ⭐
implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.8.0'
implementation 'org.jetbrains.kotlin:kotlin-reflect:1.9.21'
// WEBSOCKET ⭐
implementation 'org.springframework.boot:spring-boot-starter-websocket'
// VALIDATION ⭐
implementation 'org.springframework.boot:spring-boot-starter-validation'
// Firebase ⭐
implementation 'com.google.firebase:firebase-admin:9.1.1'
// AWS ⭐
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
// Vault 설정
implementation 'org.springframework.cloud:spring-cloud-starter-vault-config'
// 모니터링 관련
implementation 'org.springframework.boot:spring-boot-starter-actuator'
// 공간데이터 활용
implementation 'org.hibernate:hibernate-spatial:6.1.7.Final' // Hibernate 6.x 버전
// RETRY CONFIG 의존성 추가
implementation 'org.springframework.retry:spring-retry'
implementation 'org.springframework.boot:spring-boot-starter-aop'
// Spring Cache 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-cache'
implementation 'com.github.ben-manes.caffeine:caffeine:3.1.8'
// GEO-HASH 의존성 추가
implementation 'ch.hsr:geohash:1.4.0'
//kafka
implementation "org.springframework.kafka:spring-kafka"
// mongoDB
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
}
def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile
// gradle에게 읽어야 할 source 폴더를 알려줌
sourceSets {
main.java.srcDirs += [querydslDir] // src/main/java 에 querydslDir 폴더를 추가
}
// 모든 `JAVA compile` 작업에 밑의 설정을 각각 제공함.
tasks.withType(JavaCompile).configureEach {
options.getGeneratedSourceOutputDirectory().set(file(querydslDir))
options.compilerArgs += [
'--enable-preview',
'-Amapstruct.defaultComponentModel=spring', //MAPPER BEAN 자동 주입
'-parameters'
]
}
tasks.named('test') {
useJUnitPlatform()
jvmArgs(['--enable-preview'])
}