728x90
버전 때문인지 계속 설정을 해도 proto 파일에 대한 자바코드가 자동 생성되지않아 애를 먹었다.
참고 : https://ecolumbus.tistory.com/138
<grpc.version>1.68.1</grpc.version>
<protobuf.version>3.25.5</protobuf.version> <!-- 4.x 버전으로 했더니 grpc.version과 맞지않아 proto 인터페이스 파일깨지고 maven install시 에러로그찍힘 -->
</properties>
버전 관리
- grpc.version: 1.68.1
- protobuf.version: 3.21.0
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>${grpc.version}</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>${grpc.version}</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>${grpc.version}</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>${protobuf.version}</version>
</dependency>
</dependencies>
의존성(Dependencies)
- gRPC 관련 라이브러리
- grpc-netty-shaded: gRPC 서버 및 클라이언트의 네트워킹을 처리.
- grpc-protobuf: 프로토콜 버퍼 메시지의 직렬화 및 역직렬화를 지원.
- grpc-stub: gRPC Stub 생성과 RPC 호출 지원.
- 프로토콜 버퍼(Java용)
- protobuf-java: 프로토콜 버퍼 메시지를 Java 코드로 변환.
</pluginManagement>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.6.2</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.11.4</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<includeMavenTypes>direct</includeMavenTypes>
<inputDirectories>
<include>src/main/resources</include>
</inputDirectories>
<outputTargets>
<outputTarget>
<type>java</type>
<outputDirectory>src/main/java</outputDirectory>
</outputTarget>
<outputTarget>
<type>grpc-java</type>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.15.0</pluginArtifact> <!-- 이거안하면 proto Service 인터페이스생성안됨 -->
<outputDirectory>src/main/java</outputDirectory>
</outputTarget>
</outputTargets>
</configuration>
</execution>
</executions>
</plugin>
Maven 플러그인(Plugins)
a) os-maven-plugin
- 운영체제에 따라 적절한 네이티브 의존성을 자동으로 관리.
- gRPC나 Protobuf는 플랫폼 별 빌드 도구가 다를 수 있기 때문에, 운영체제 종속성 문제를 해결하기 위해 추가.
b) protoc-jar-maven-plugin
- 프로토콜 버퍼 파일(*.proto)을 컴파일하여 Java 및 gRPC 인터페이스 생성.
- 주요 설정:
- <inputDirectories>: 프로토 파일이 위치한 디렉터리(src/main/resources).
- <outputTargets>:
- Java 소스코드 생성.
- gRPC 서비스 인터페이스 생성:
- protoc-gen-grpc-java 플러그인을 명시적으로 설정.
- gRPC Java Service 생성이 플러그인 없이는 동작하지 않음.
+ 추가해야할 dependency
grpc client 를 적용한 war를 배포 후에 아래와 같이 에러가 발생했다.
exception is java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument
Runtime Dependencies 인 Guava 종속성을 호환되지 않는 버전을 사용하거나, 없어서 생기는 에러라고한다.
pom.xml에 아래와 같이 종속성 추가하고 update 하여 적용하였더니 잘 작동하였다.
<dependency> <!-- runtime... -->
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>33.3.1-jre</version>
</dependency>
버전 확인 링크:
https://mvnrepository.com/artifact/io.grpc/grpc-protobuf/1.68.1
728x90
'STUDY > SpringLegacy' 카테고리의 다른 글
[Spring] MultipartFile 다중 파일 업로드 받아 API에 전달하는 컨트롤러 구현 (0) | 2024.11.22 |
---|---|
[Spring] Interceptor 인터셉터 (0) | 2024.11.09 |
[STS] Spring MVC Project 템플릿 없음 해결방법 (0) | 2024.10.11 |
[Spring] Spring에서 클라이언트로부터 파라미터를 받는 방법과 Content-Type 설정 (0) | 2024.07.30 |
[Spring] @Autowired null 문제 해결 (필드 주입 사용 시) (0) | 2024.06.10 |