表記の通り、 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 ファイルなど)。