@@ -2,7 +2,6 @@ plugins {
22 id ' java'
33 id ' org.springframework.boot' version ' 4.0.1'
44 id ' io.spring.dependency-management' version ' 1.1.7'
5-
65 id ' com.google.protobuf' version ' 0.9.5'
76}
87
@@ -41,15 +40,17 @@ dependencies {
4140 implementation ' org.springframework.boot:spring-boot-starter-data-jpa'
4241 implementation ' org.springframework.boot:spring-boot-starter-validation'
4342
44-
45- // Spring gRPC Starter
43+ // Spring gRPC Starter
4644 implementation ' org.springframework.grpc:spring-grpc-spring-boot-starter'
4745 implementation ' com.google.protobuf:protobuf-java'
4846 implementation ' io.grpc:grpc-stub'
47+ implementation ' io.grpc:grpc-protobuf:1.62.2'
4948
5049 implementation ' org.springframework.boot:spring-boot-starter-webmvc'
5150
5251 compileOnly ' org.projectlombok:lombok'
52+ compileOnly ' jakarta.annotation:jakarta.annotation-api:2.1.1'
53+ compileOnly ' javax.annotation:javax.annotation-api:1.3.2'
5354 developmentOnly ' org.springframework.boot:spring-boot-devtools'
5455 runtimeOnly ' com.mysql:mysql-connector-j'
5556 annotationProcessor ' org.projectlombok:lombok'
@@ -58,52 +59,65 @@ dependencies {
5859 testImplementation ' org.springframework.boot:spring-boot-starter-data-redis-test'
5960 testRuntimeOnly ' org.junit.platform:junit-platform-launcher'
6061 testRuntimeOnly ' com.h2database:h2'
62+
6163 implementation ' com.querydsl:querydsl-jpa:5.0.0:jakarta'
6264 annotationProcessor " com.querydsl:querydsl-apt:5.0.0:jakarta"
6365 annotationProcessor " jakarta.annotation:jakarta.annotation-api"
6466 annotationProcessor " jakarta.persistence:jakarta.persistence-api"
6567}
6668
67- def querydslDir = layout. buildDirectory. dir(" generated/querydsl" ). get(). asFile
68-
69- tasks. named(' compileJava' , JavaCompile ) {
70- options. generatedSourceOutputDirectory. set(querydslDir)
71- }
72-
7369/**
7470 * proto 컴파일 설정
7571 * - .proto 위치: src/main/proto
7672 * - 생성 위치: build/generated/...
7773 */
7874protobuf {
79- protoc {
80- artifact = " com.google.protobuf:protoc:4.33.2"
81- }
75+ protoc { artifact = " com.google.protobuf:protoc:3.25.3" }
8276 plugins {
8377 grpc {
84- artifact = " io.grpc:protoc-gen-grpc-java:1.77.1"
78+ def osName = System . getProperty(" os.name" ). toLowerCase()
79+ def osArch = System . getProperty(" os.arch" ). toLowerCase()
80+
81+ if (osName. contains(" win" )) {
82+ artifact = " io.grpc:protoc-gen-grpc-java:1.62.2:windows-x86_64@exe"
83+ } else if (osName. contains(" mac" )) {
84+ if (osArch. contains(" aarch64" )) {
85+ artifact = " io.grpc:protoc-gen-grpc-java:1.62.2:osx-aarch_64@exe"
86+ } else {
87+ artifact = " io.grpc:protoc-gen-grpc-java:1.62.2:osx-x86_64@exe"
88+ }
89+ } else {
90+ artifact = " io.grpc:protoc-gen-grpc-java:1.62.2:linux-x86_64@exe"
91+ }
8592 }
8693 }
8794 generateProtoTasks {
88- all(). each { task ->
95+ all(). configureEach { task ->
8996 task. plugins {
9097 grpc {}
9198 }
9299 }
93100 }
94101}
95102
103+ def querydslDir = layout. buildDirectory. dir(" generated/querydsl" ). get(). asFile
104+
96105sourceSets {
97106 main {
107+ proto { srcDir " src/main/proto" }
98108 java {
99- srcDirs + = [
109+ srcDirs querydslDir,
100110 " $buildDir /generated/sources/proto/main/java" ,
101111 " $buildDir /generated/sources/proto/main/grpc"
102- ]
103112 }
104113 }
105114}
106115
107- tasks. named(' test' ) {
108- useJUnitPlatform()
116+ tasks. named(' compileJava' , JavaCompile ) {
117+ options. generatedSourceOutputDirectory. set(querydslDir)
118+ dependsOn tasks. named(' generateProto' )
119+ }
120+
121+ tasks. named(' processResources' ) {
122+ duplicatesStrategy = DuplicatesStrategy . EXCLUDE
109123}
0 commit comments