調査 #274
高橋 徹 さんが3年以上前に更新
h4. 調査目的
JDK 14でお試し導入(Incubator)され、JDK 16で正式搭載された jpackage ツールをGradleから利用して自己完結型Javaアプリケーションをパッケージ化する方法を明らかにする。
主な対象は、Windows OS向けのネイティブインストーラ(MSI形式)とする。
h4. 調査結果
* サードパーティ・プラグイン "The Badass JLink Plugin":https://badass-jlink-plugin.beryx.org/releases/latest/ を使用
** jpackage タスクでインストーラを生成
h5. Windows MSI形式インストーラを作成する最小限の build.gradle 記述
build.gradle を{{collapse
<pre><code class="groovy">
plugins {
id 'org.beryx.jlink' version "2.24.2"
}
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
application {
mainModule = 'com.torutk.gadget.analogclock'
mainClass = 'com.torutk.gadget.analogclock.AnalogClockApp'
}
</code></pre>
}}
h5. インストーラオプションの指定
起動時のJVMオプションおよびコマンドラインオプション
build.gradle の抜粋を{{collapse を{{collapse
<pre><code class="groovy">
jlink {
launcher {
jvmArgs = [
'-Xms32m', '-Xmx64m', '-Xss256k', '-XX:TieredStopAtLevel=1',
'-XX:CICompilerCount=2', '-XX:CompileThreshold=1500',
'-XX:InitialCodeCacheSize=160k', '-XX:ReservedCodeCacheSize=32m',
'-XX:MetaspaceSize=12m', '-XX:+UseSerialGC'
]
args = [
'--x=0', '--y=0', '--scale=1.0', '--fps=5.0', '--on-top=false'
]
}
</code></pre>
}}
インストーラ生成オプションを{{collapse
<pre><code class="groovy">
jlink {
jpackage {
installerName = 'AnalogClock'
appVersion = '0.8.1'
if (org.gradle.internal.os.OperatingSystem.current().windows) {
installerType = 'msi'
installerOptions += [
'--win-menu-group', 'High Bridge',
'--win-menu',
'--win-shortcut',
'--win-upgrade-uuid', 'fe287b25-e03d-4744-90f4-96b05dc36bf0',
'--vendor', 'High Bridge'
]
}
}
</code></pre>
}}
h4. 完了条件
Gradle のプロジェクトから ネイティブインストーラを生成できること。
h4. 調査経過(概要)
戻る