Graalこれは、なにをしたくて書いたもの?こちらのエントリを見て、GraalVMでネイティブイメージを作るMavenプラグインがあるというので、試してみようかと。Pluginを使ってネイティブイメージにビルドしてみたいと思います。今回の環境は、こちら。CEも用意しておきます。Centralにあるプラグインが1.0.0.-rc14なので合わせておきました。サンプルプログラムそれでは、サンプルプログラムを作成していきます。Mavenの設定は、最初はこんな感じで用意。</build>サンプルプログラム。3を使ったサンプルプログラムです。JDKのHttpServerも使っています。hello単体ではOKそうです。ネイティブイメージを作成してみるそれでは、ネイティブイメージを作成してみましょう。packageゴールを実行した時に、ネイティブイメージが作成されるようにしています。packageエラーになります。1]「jvmci」がないよ、と怒られています。システムプロパティ「java.home」からファイルを探そうとしているようです。https://github.com/oracle/graal/blob/vm-1.0.0-rc14/substratevm/src/native-image-maven-plugin/src/main/java/com/oracle/substratevm/NativeImageMojo.java#L293-L295実行には、GraalVMが必要なようですね。https://github.com/oracle/graal/blob/vm-1.0.0-rc14/substratevm/src/native-image-maven-plugin/src/main/java/com/oracle/substratevm/NativeImageMojo.java#L158というわけで、GraalVMを使うようにJAVA_HOMEを設定しなおします。package怒られました。1]その前にあるログを見ると、「エントリポイントとなるメソッドを持ったクラスが指定されていないよ」と言われています。--help)プラグインの設定に、mainClassを足してみます。</plugin>ビルド。packageすると、今度はネイティブイメージを作成できるようになります。------------------------------------------------------------------------しかし、イメージ名が長いです...。mainメソッドを持ったクラス名から、イメージの名前が作られるからですね。startup.設定に、imageNameを加えて生成されるネイティブイメージの名前を変えてみましょう。</plugin>ビルド。packageビルド時の様子。-H:Name=server-native-imageイメージ名を変更することができました。startup.他にも、buildArgsという「native-image」コマンドにオプションを設定できる項目もあるようです。(Japanese)ソースコードで設定を見たらよい、という話もあるでしょう。https://github.com/oracle/graal/blob/vm-1.0.0-rc14/substratevm/src/native-image-maven-plugin/src/main/java/com/oracle/substratevm/NativeImageMojo.java#L69-L85最終的に、どのような引数が「native-image」コマンドに渡されるかは、ビルド時の情報として出力されるのがよいですね。Plugin自身にmainClassの設定を行っていました。ここでは、その他のMavenプラグインの設定を引き継ぐようにしてみましょう。Plugin(優先順)の設定を利用することができるようです。Pluginの設定を追加してみます。</plugins>ビルド。PluginでJARをまとめた結果をネイティブイメージにするというわけではなさそうです。JARそのものもできています。Pluginでも試してみましょう。</plugins>ビルド。packageネイティブイメージのビルドについての結果は変わらず。-H:Name=server-native-image実行結果は、割愛します。試して設定のイメージはできるようになりましたよ、と。読者になる検索リンクはてなブログブログをはじめる週刊はてなブログはてなブログPro月別アーカイブはてなブログをはじめよう!Kazuhiraさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。