-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.gradle
116 lines (96 loc) · 4.28 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
// gradle build 명령어로 인해 실행되는 파일 -> gradle 명령으로 수행하는 처리는 이 파일의 내용을 바탕으로 실행됨.
// 빌드하는 동안 필요한 처리를 모아놓는 곳, Gradle이 빌드되기 전에 실행되고, dependencies와 repositories가 포함될 수 있음.
buildscript {
// build.gradle에서 사용하는 전역 변수를 선언하는 블록
ext {
}
}
// 프로젝트를 빌드하기 위한 여러가지 작업(컴파일, jar생성)을 해주는 플러그인.
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.3'
id 'io.spring.dependency-management' version '1.1.0'
/* springboot3 이상 버전 사용시
'attempt to recreate a file for type <entity>' 빌드 실패
queryDsl plugin 사용하지 않고 설정하는 방식으로 변경 */
// id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}
// project metadata
group = 'com.aluminium'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
// gradle이 필요한 라이브러리를 자동으로 다운로드 하기위해 사용하는 저장소
repositories {
mavenCentral() //maven 중앙 저장소
}
// 저장소에서 필요한 라이브러리를 사용하기 위한 문장
dependencies {
//implementation: 컴파일시에 의존(사용)하는 라이브러리를 지정 -> 의존 라이브러리 수정시 본 모듈까지만 재빌드.
//본 모듈을 의존하는 모듈은 해당 라이브러리의 api 를 사용할 수 없음.
// basic spring managed dependency
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
//annotationProcessor: 어노테이션 관련
// lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// runtimeOnly: 런타임시에만 필요한 라이브러리, testRuntimeOnly: 테스트 런타임시에만 필요한 라이브러리
testRuntimeOnly 'com.h2database:h2'
runtimeOnly 'com.mysql:mysql-connector-j'
// 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"
// json
implementation group: 'org.json', name: 'json', version: '20210307'
// coordinate
implementation group: 'org.osgeo', name: 'proj4j', version: '0.1.0'
// ConfigurationProperties
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
//swagger
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.4'
//test
// 테스트 컴파일(단위테스팅)에 사용하는 라이브러리를 지정
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
// jwt
implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.5'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.5'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.5'
}
tasks.named('test') {
useJUnitPlatform()
}
// submodule에 있는 yml 가져와서 빌드
task copyGitSubmodule(type: Copy) {
from './config/BE/resources'
include '*.yml'
into './src/main/resources'
}
/*
* queryDSL 설정 추가
* https://velog.io/@juhyeon1114/Spring-QueryDsl-gradle-%EC%84%A4%EC%A0%95-Spring-boot-3.0-%EC%9D%B4%EC%83%81
*/
//Querydsl Q Class 생성 위치
def querydslDir = "$buildDir/generated/querydsl"
//Querydsl Q Class 생성 위치 지정
tasks.withType(JavaCompile) {
options.getGeneratedSourceOutputDirectory().set(file(querydslDir))
}
//java source set 에 Querydsl Q Class 위치 추가
sourceSets {
main.java.srcDirs += [ querydslDir ]
}
//gradle clean 시, Q Class 디렉토리까지 삭제하도록 설정
clean {
delete file(querydslDir)
}