表記の通り、 Gradle プラグインの graalvm-native-image-plugin の v1.4.0 をリリースしました。
このリリースでは以下の機能が追加されました。
- シェアードライブラリーをビルドする機能(Java11 以降のみ)
- 上記の機能追加に伴う、
nativeImage#setMainClass(String)
メソッドの非推奨化
シェアードライブラリーをビルドする機能(Java11 以降のみ)
以下のイシューにより対応しました。
この機能追加により、 nativeImage {}
ブロックの中の記述方法が少々変わりました。
従来どおり実行ファイルを作る場合は以下のように main
メソッドのあるクラスを buildType { executable { main } }
に記述します
nativeImage { graalVmHome = '/path/to/graal' // 従来は mainClass = ... と指定していたが、非推奨に // 今後は 若干ややこしいもののこの形で指定します buildType { build -> build.executable { main = 'com.example.App' } } executableName = 'bin-file-name' outputDirectory = file("$buildDir/bin") }
シェアードライブラリーを作る場合は以下のように buildType {}
内で sharedLibrary
を指定します
nativeImage { graalVmHome = '/path/to/graal' buildType { build -> build.sharedLibrary } executableName = 'bin-file-name' outputDirectory = file("$buildDir/bin") }
上記のように指定した場合、 build/bin/bin-file-name.h
や build/bin/bin-file-name.so
といったファイルなどが生成されます(OS X の場合は dylib
ファイルなど)。