CLOVER🍀

That was when it all began.

「Code Quarkus」でQuakusアプリケーションを作成する

QuarkusのWebサイトをふと見て、

f:id:Kazuhira:20190914195654p:plain

ヘッダーに、「START CODING」というものができていることに気づきまして。

f:id:Kazuhira:20190914195917p:plain

こちらを選択すると、「https://code.quarkus.io/」というサイトへ移ります。

Quarkus - Start coding with code.quarkus.io

f:id:Kazuhira:20190914200137p:plain

どうやら、プロジェクトに必要なQuarkus Extensionを選び、プロジェクトの雛形を作成するサイトのようです。

Spring InitializrやMicroProfile Starterみたいな感じがしますね。

Spring Initializr

Starter | MicroProfile

https://code.quarkus.io/」のソースコードはこちら。

GitHub - quarkusio/code.quarkus.io: Code Quarkus - Start coding with Quarkus

選択できるExtensionの一覧は、こちらの模様。

https://github.com/quarkusio/code.quarkus.io/blob/master/src/main/resources/quarkus/extensions.json

Quarkusのサイトで、「START CODING」があった位置には、「Extensions」という拡張機能がリストアップされたページがリンクされて
いました。

こちらが置き換わった感じですね。

https://github.com/quarkusio/quarkusio.github.io/commit/5784264d94c840f10b6da73d0a39568966537bae

「START CODING」のページでは、作成するプロジェクトの情報を入力したり

f:id:Kazuhira:20190914200242p:plain

利用するExtensionを選択したり

f:id:Kazuhira:20190914200915p:plain

Extensionを絞り込むために、テキストフィールドを活用したりできます。

f:id:Kazuhira:20190914200953p:plain

最後に、「Generate your application」というボタンを押すと、zipファイルのダウンロードが始まります。

f:id:Kazuhira:20190914201324p:plain

また、この時、裏側でダイアログが起動しているので、こちらのリンクからzipファイルをダウンロードすることもできます。

f:id:Kazuhira:20190914201359p:plain

ただ、「×」を押してこのダイアログを閉じると、入力した情報がリセットされるので注意してくださいね。
※「Start a new application」を選んだ場合と同じ

引き続き、同じプロジェクトの情報を扱う場合は「Go back」を選びましょう。

リンクを見ればなんとなく予想はつきますが、ここまで入力した情報をcurlなどで取得することもできそうです。

$ curl -o quarkus-example.zip 'https://code.quarkus.io/api/download?g=org.littlewings&a=quarkus-example&v=0.0.1-SNAPSHOT&c=org.littlewings.ExampleResource&e=io.quarkus%3Aquarkus-resteasy-jackson&e=io.quarkus%3Aquarkus-hibernate-orm'

今回は、RESTEasy Jacksonと、Hibernate ORMを選択しました。

ところで、以下のようにQuarkus Maven Pluginでプロジェクトを作った場合と、なにか違いはあるのでしょうか?試してみました。

$ mvn io.quarkus:quarkus-maven-plugin:0.21.2:create \
    -DprojectGroupId=org.littlewings \
    -DprojectArtifactId=quarkus-example \
    -DprojectVersion=0.0.1-SNAPSHOT \
    -Dextensions="resteasy-jackson,hibernate-orm"

propertiesの順番と、依存関係の順番(hibernate-orm、resteasy-jackson)が異なるくらいでした。

こちらはQuarkus Maven Pluginで作ったもの。

  <properties>
    <surefire-plugin.version>2.22.0</surefire-plugin.version>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
    <quarkus.version>0.21.2</quarkus.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>

「START CODING」ページで作ったもの。

  <properties>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <surefire-plugin.version>2.22.0</surefire-plugin.version>
    <quarkus.version>0.21.2</quarkus.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

あくまで順番だけなので、pom.xmlの意味としてはどちらを選んでも変わらないようです。

あとは、「START CODING」ページで作った方のプロジェクトでは、以下のソースコードがついてきました。

src/main/java/org/littlewings/ExampleResource.java
src/test/java/org/littlewings/ExampleResourceTest.java
src/test/java/org/littlewings/NativeExampleResourceIT.java

Quakurs Maven Pluginでいう、classNameおよびpath(中身を見たら、「/hello」でした)を固定で指定して作成した感じみたいですね。

なんとなく見つけてみたので、試してみました、と。