Ponz Dev Log

ソース派のシステムエンジニアの開発日記

MavenでAvroのスキーマファイルからJavaコードを生成するのにつまづいた

Kafka Tutorialsを進めていたときに、タイトル通りMavenでAvroのスキーマからJavaのコード生成するのにつまづいた話です。 このサイトに掲載されているサンプルコードは全てGradleでビルドされているのですが、自分が良く使っているMavenだったらどうかなと実践してみた次第です。

kafka-tutorials.confluent.io

Avroの公式サイトにはMavenプラグインでAvroのスキーマからJavaのコードを生成する方法が乗っていますが、 Mavenを使うならば mvn compile を実行するようにガイドされています。

avro.apache.org

しかし、 mvn compile をいざ実行してみると、 コンパイルするものがないとメッセージが返ってきます。無慈悲です。

[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ kstreams-serialization ---
[INFO] Nothing to compile - all classes are up to date

最終的にはStackoverflowの以下のissueに辿り着き、 mvn avro:schema を実行すればできると。 よくよく考えたらgoalsに書いてるんだから当然でした笑

stackoverflow.com

movie.avsc というスキーマファイルを作成して実際に上記のコマンドを実行してみると、無事 generated-sources 配下にJavaのコード Movie.java が出力されました。

f:id:accelerk:20200204010005p:plain

めでたし、めでたし。


しかし、なぜ mvn compileで通らないのかは理解しなければ。。。