Avro Gradle source, outputDir (사용자 지정)

itbuddy·2024년 9월 27일

Avro

목록 보기
4/4

지난 포스트에 이어서 *.avsc 파일의 위치와 outputDir의 위치를 바꾸는 방법으로 설정해봅시다.
setting.gradle은 지난 포스트와 같습니다.

github

build.gradle


import com.github.davidmc24.gradle.plugin.avro.GenerateAvroJavaTask

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.4'
    id 'io.spring.dependency-management' version '1.1.6'
    //avro
//    id "com.github.davidmc24.gradle.plugin.avro" version "1.9.1"
    id "com.github.davidmc24.gradle.plugin.avro-base" version "1.9.1"
}
....

// avro
avro{
    outputCharacterEncoding = "UTF-8"
}

def generateAvro = tasks.register("generateAvro", GenerateAvroJavaTask) {
    source("src/main/resources/avro") // *.avsc 파일의 위치
    outputDir = file("src/main/java") // 저장될 위치
}

tasks.named("compileJava").configure {
    source(generateAvro)
}

avro 스키마 예제

  • namespace가 생성된 자바객체의 패키지 위치가 됩니다.
{
  "name": "OrderCancelKafkaEvent",
  "namespace": "com.example.springkafkaavro.common.kafka.model",
  "type": "record",
  "fields": [
    {
      "name": "odrderId",
      "type": "long"
    }
  ]
}

gradle build 결과

후기

Microservices: Clean Architecture, DDD, SAGA, Outbox & Kafka - Ali Gelenler 강의를 듣던 도중 처음 접한 데이터 직렬화/역직렬화 라이브러리였다. 평소에도 Json 보다 더 좋은게 있지 않을까 해서 찾아본게 yaml, Bson 정도 였는데 이번 기회에 Avro에 대해 알게 되어 시야가 넓어진 것 같다.

Ref

gradle-avro-plugin Github Repo

profile
프론트도 조금 아는 짱구 같은 서버 프로그래머

0개의 댓글