Kafka Tutorialsを進めていたときに、タイトル通りMavenでAvroのスキーマからJavaのコード生成するのにつまづいた話です。 このサイトに掲載されているサンプルコードは全てGradleでビルドされているのですが、自分が良く使っているMavenだったらどうかなと実践してみた次第です。
Avroの公式サイトにはMavenのプラグインでAvroのスキーマからJavaのコードを生成する方法が乗っていますが、
Mavenを使うならば mvn compile
を実行するようにガイドされています。
しかし、 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に書いてるんだから当然でした笑
movie.avsc
というスキーマファイルを作成して実際に上記のコマンドを実行してみると、無事 generated-sources
配下にJavaのコード Movie.java
が出力されました。
めでたし、めでたし。
しかし、なぜ mvn compileで通らないのかは理解しなければ。。。