-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuild.gradle
More file actions
130 lines (106 loc) · 4.2 KB
/
build.gradle
File metadata and controls
130 lines (106 loc) · 4.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
plugins {
id 'org.springframework.boot' version '3.5.0'
id 'io.spring.dependency-management' version '1.1.7'
id 'com.diffplug.spotless' version '8.1.0'
id 'org.flywaydb.flyway' version '11.11.2'
id 'org.jetbrains.kotlin.jvm' version '2.2.21'
id 'org.jetbrains.kotlin.plugin.spring' version '2.2.21'
id 'org.jetbrains.kotlin.plugin.jpa' version '2.2.21'
id 'org.jetbrains.kotlin.kapt' version '2.2.21'
}
group = 'com.ject'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
}
dependencies {
// Spring Boot Starters
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-batch'
implementation 'org.springframework.boot:spring-boot-starter-webflux'
// Swagger (SpringDoc UI 문서화)
implementation 'org.apache.commons:commons-lang3:3.20.0'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0'
// Validation
implementation 'org.springframework.boot:spring-boot-starter-validation'
// Spring Security
implementation 'org.springframework.boot:spring-boot-starter-security'
// JWT
implementation("io.jsonwebtoken:jjwt-api:0.12.3")
runtimeOnly('io.jsonwebtoken:jjwt-impl:0.12.3')
runtimeOnly('io.jsonwebtoken:jjwt-jackson:0.12.3')
// Querydsl (Kotlin용 – kapt 추가)
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
kapt 'com.querydsl:querydsl-apt:5.0.0:jakarta'
kapt 'jakarta.annotation:jakarta.annotation-api'
kapt 'jakarta.persistence:jakarta.persistence-api'
// Redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
// Flyway (MySQL)
implementation "org.flywaydb:flyway-core"
implementation 'org.flywaydb:flyway-mysql'
runtimeOnly 'com.mysql:mysql-connector-j'
// Firebase-admin
implementation 'com.google.firebase:firebase-admin:9.2.0'
// AWS SDK
implementation 'software.amazon.awssdk:s3:2.25.33'
implementation 'software.amazon.awssdk:auth:2.25.33' // IAM 인증 관련
implementation 'software.amazon.awssdk:sts:2.25.33' // STS (IAM Role 인증 필요시)
// Tika : 이미지 타입 검사
implementation 'org.apache.tika:tika-core:2.5.0'
// Kotlin
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
implementation 'org.jetbrains.kotlin:kotlin-reflect'
implementation 'io.projectreactor.kotlin:reactor-kotlin-extensions'
testImplementation 'org.jetbrains.kotlin:kotlin-test'
// Jackson
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
// Test
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.batch:spring-batch-test'
testImplementation 'org.springframework.security:spring-security-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
testImplementation 'org.mockito:mockito-core'
testImplementation 'org.mockito:mockito-junit-jupiter'
testImplementation 'org.mockito.kotlin:mockito-kotlin:6.1.0'
}
jar.enabled = false // 일반 JAR 파일 생성 비활성화
tasks.named('test') {
useJUnitPlatform()
}
spotless {
kotlin {
target("**/*.kt") // 모든 .kt 파일에 적용
ktlint("1.8.0") // Kotlin 코드 스타일 검사 및 자동 포맷팅
trimTrailingWhitespace() // 공백 제거
endWithNewline() // 파일 끝부분 개행 처리
}
}
// pre-commit spotless check script
// 작성한 pre-commit 스크립트를 ./git/hooks/pre-commit 으로 덮어쓰기
tasks.register("updateGitHooks", Copy) {
from "scripts/pre-commit"
into ".git/hooks"
}
// compileKotlin 작업 시 updateGitHooks task 수행
compileKotlin.dependsOn updateGitHooks
// Kotlin 소스셋에 QClass 경로 추가
sourceSets {
main {
kotlin {
srcDirs += "$buildDir/generated/source/kapt/main"
}
}
}
kapt {
arguments {
arg("querydsl.useFields", "false")
}
}