ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Avro Gradle source, outputDir (사용자 지정)
    시리즈/Avro 2024. 10. 2. 03:47

    지난 포스트에 이어서 *.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

    '시리즈 > Avro' 카테고리의 다른 글

    Avro Gradle Plugin (디폴트 설정)  (2) 2024.10.02
    Avro VS JSON  (2) 2024.10.02
    Avro 란?  (0) 2024.10.02

    댓글

Designed by Tistory.