-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.gradle
170 lines (143 loc) · 6.14 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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
plugins {
id 'org.springframework.boot' version '2.7.0'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
// Q 클래스 생성 플러그인
id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
//node를 빌드-tailwinds
id("com.github.node-gradle.node") version "7.0.1"
}
group = 'com.sjs'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 16
targetCompatibility = 16
jar {
enabled = false
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'junit:junit:4.13.1'
testImplementation 'org.projectlombok:lombok:1.18.22'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
implementation 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation ('org.springframework.boot:spring-boot-starter-test')
{
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
testImplementation 'org.springframework.security:spring-security-test'
implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.7.0'
implementation 'org.thymeleaf.extras:thymeleaf-extras-java8time:3.0.4.RELEASE'
implementation group: 'org.javassist', name: 'javassist', version: '3.15.0-GA'
implementation group: 'org.modelmapper', name: 'modelmapper', version: '2.3.8'
implementation group: 'org.thymeleaf.extras', name: 'thymeleaf-extras-springsecurity5', version: '3.0.4.RELEASE' //시큐리티
compile group: 'net.nurigo', name: 'javaSDK', version: '2.2'
implementation group: 'org.json', name: 'json', version: '20230227'
implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.13.3'
implementation 'org.springframework.boot:spring-boot-starter-validation'
//파일 처리 관련 - IOUtils 패키지는 대부분 static 메소드이므로 객체를 생성하지 않고 바로 사용 가능
implementation group: 'commons-io', name: 'commons-io', version: '2.11.0'
//S3 연동
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
//redis
// implementation 'org.springframework.boot:spring-boot-starter-data-redis'
//querydsl
implementation "com.querydsl:querydsl-jpa:5.0.0" // JPA 지원
implementation "com.querydsl:querydsl-core:5.0.0" // QueryDSL 코드 생성
implementation "com.querydsl:querydsl-apt:5.0.0" // Annotation Process Tool
implementation 'org.springframework.boot:spring-boot-starter-actuator' // actuator 추가
implementation 'io.micrometer:micrometer-core'
implementation 'io.micrometer:micrometer-registry-prometheus'
// Spring Boot 로깅 스타터 의존성
implementation 'org.springframework.boot:spring-boot-starter-logging'
/* kafka */
implementation 'org.springframework.kafka:spring-kafka'
/*spring session - redis*/
implementation 'org.springframework.session:spring-session-data-redis'
implementation 'org.springframework.data:spring-data-redis'
runtimeOnly 'redis.clients:jedis'
}
test {
useJUnitPlatform()
}
/**Querydsl 설정 시작*/
// 생성된 Q 클래스가 저장될 위치를 정의한다.
def querydslDir = "$buildDir/generated/querydsl"
// queryDSL 자체에 대한 config
querydsl {
// jpa = true로 설정하여 JPA 애너테이션을 인식
jpa = true
// querydslSourcesDir를 querydslDir로 설정하여 Q 클래스에 대한 output 디렉토리를 지정
querydslSourcesDir = querydslDir
}
sourceSets {
// Q 클래스 등이 저장되는 querydslDir를 소스 코드가 저장되는 디렉토리로 등록
// 이 덕에 Gradle이 자동으로 QueryDSL 코드를 컴파일할 수 있다.
main.java.srcDir querydslDir
}
configurations {
// querydsl 클래스 경로를 컴파일 클래스 경로에 상속
querydsl.extendsFrom compileClasspath
}
// 내부적으로 Querydsl은 Java의 Annotation Processor를 이용한다.
// 컴파일러는 이 경로에 위치한 모든 JAR 파일들을 검색하여 annotation processor를 찾는다.
// 그리고 이를 실행하여 소스 코드에서 정의한 어노테이션들을 처리한다.
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
// -proc:only: 이 옵션은 컴파일러의 어노테이션 처리만 수행하고, 클래스를 실제로 컴파일하지 않는 것을 의미한다.
// -processor: 이 옵션은 어노테이션 프로세서를 지정하는데, QueryDSL의 어노테이션 프로세서와 Lombok의 어노테이션 프로세서를 지정하여 명시적으로 설정한다.
project.afterEvaluate {
project.tasks.compileQuerydsl.options.compilerArgs = [
"-proc:only",
"-processor", project.querydsl.processors() +
',lombok.launch.AnnotationProcessorHider$AnnotationProcessor'
]
}
// Java 컴파일 작업이 compileQuerydsl 작업에 의존하도록 설정한다.
// compileQuerydsl 작업이 먼저 수행된 후에 compileJava 작업이 수행되게끔 순서를 정해주는 것인데,
// QueryDSL Q-Type 소스 생성 작업이 Java 컴파일 작업 전에 먼저 이뤄지도록 한다.
// 위 afterEvaluate와 같이 사용하면, Lombok 어노테이션 프로세스와 충돌하지 않는다.
tasks.named('compileJava') {
dependsOn tasks.named('compileQuerydsl')
}
/**Querydsl 설정 끝*/
node {
download = true
/**
* node version
*/
version = "20.10.0"
/**
* npm version
*/
npmVersion = "10.2.3"
nodeProjectDir = file("${projectDir}/src/main/resources/static")
}
task tailwindCss(type: NpxTask) {
doFirst {
logger.lifecycle("tailwindCss task is starting...")
}
command = "tailwind"
args = ["-i", "${projectDir}/src/main/resources/static/tailwinds.css", "-o", "${projectDir}/src/main/resources/static/css/tailwind-out.css"]
dependsOn 'npmInstall'
doLast {
logger.lifecycle("tailwindCss task has completed.")
}
}
//tasks.processResources {
// //processResources가 불리지 않아..
// dependsOn(tailwindCss)
//}