これは、なにをしたくて書いたもの?
Quarkusを使っていると、選択したExtensionに応じて初期コードが配置されます。たとえば、以下のような表示ですね。
[INFO] applying codestarts... [INFO] 📚 java 🔨 maven 📦 quarkus 📝 config-properties 🔧 dockerfiles 🔧 maven-wrapper 🚀 resteasy-reactive-codestart
選択した言語やビルドツール、Extensionに応じて内容が変わるのですが、これはどこから来ているのだろう?というのが気になりまして。
ちょっと情報を追ってみました。正確に言うと、どこかのエントリーの中に軽く含まれていると思うのですが、完全にオマケ扱いで
探すのが面倒になったので今回あらためて書こうかなと…。
今回は、Quarkus 2.7.1.Final時点の情報で見ています。
Extension codestart
調べてみると、このあたりにありそうですね。
https://github.com/quarkusio/quarkus/tree/2.7.1.Final/independent-projects/tools/base-codestarts
たとえば、RESTEasy Reactiveだとこちら。
こういう設定が初期コードの雛形の元のようですね。
name: resteasy-reactive-codestart ref: resteasy-reactive type: code tags: extension-codestart metadata: title: RESTEasy Reactive description: Easily start your Reactive RESTful Web Services related-guide-section: https://quarkus.io/guides/getting-started-reactive#reactive-jax-rs-resources language: base: data: resource: class-name: ReactiveGreetingResource path: "/hello" response: "Hello RESTEasy Reactive" dependencies: - io.quarkus:quarkus-resteasy-reactive test-dependencies: - io.rest-assured:rest-assured
一方で、このあたりも該当しそうです。
https://github.com/quarkusio/quarkus/tree/2.7.1.Final/devtools/project-core-extension-codestarts
WebSocket等はこちらにあります。
このあたりについて、ドキュメントがありました。
この仕組みは、Extension Codestartと呼ぶみたいですね。QuarkusのExtensionのコード生成システムだそうです。
"Extension Codestarts" is the name we gave to our Quarkus extension quickstart code generation system.
なお、このページ自体はここからはたどれなさそうですが…。
動作の説明はこちらに。
Extension Codestart / How it works
Quarkus自身が提供するExtension Codestartの配置場所についても書かれていました。
Extension Codestart / Where are the Quarkus Extension Codestarts located
Quarkusが提供するExtensionに関しては、こちらに配置されることになっています。
In Quarkus core repo, the extension codestarts are all in the same module.
Extensionのうち、RESTEasy、RESTEasy Reactive、そしてSpring Web向けのものに関しては、以下に配置されています。
RESTEasy, RESTEasy Reactive and Spring Web extension codestarts are part of the base codestarts.
これで、Extension Codestartの配置先が2つあった意味がわかりましたね。
その他のExtension向けのものは、通常はRuntime ModuleにCodestartは含める形になるようです。
For other extensions, the codestart will typically be located in the runtime module (with special instruction in the pom.xml to generate a separate codestart artifact).
自分でExtension Codestartを書くこともできるようですが、今回はパス。
Extension Codestart / Writing an Extension Codestart
コード生成を駆動するコードは、こちらのようですね。
https://github.com/quarkusio/quarkus/tree/2.7.1.Final/independent-projects/tools/codestarts