Gradle Javaアプリケーションのビルド定義¶
Java Module System対応¶
依存関係なしのビルド定義¶
依存関係のない(Java SE標準APIだけを使用する)アプリケーションをビルドする定義です。
- Gradleのapplicationプラグインを使用
- Javaのコンパイルでは、ソースレベル(-source)、ターゲットレベル(-target)をJava SE 11に指定
- JPMSのモジュールパスを使用
- ソースファイルのエンコーディングはUTF-8で、Gradleを実行するシステムのデフォルトエンコーディングはUTF-8とは限らない
- アプリケーションのエントリ・ポイントとなるクラス(メインクラス)を含むモジュール名を指定(com.torutk.gadget.analogclock)
- アプリケーションのエントリ・ポイントとなるクラス(メインクラス)名を指定(com.torutk.gadget.analogclock.AnalogClockApp)
plugins {
id 'application'
}
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
modularity.inferModulePath = true
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
application {
mainModule = 'com.torutk.gadget.analogclock'
mainClass = 'com.torutk.gadget.analogclock.AnalogClockApp'
}
非module対応¶
JDK 8までの非Module対応のJavaアプリケーションのビルド定義
アプリケーションのビルド定義¶
applicationプラグインを使用し、applicationのmainClassを指定します。
runタスクでメインクラスを実行します。
plugins {
id 'application'
}
application {
mainClass = 'com.torutk.jarmanifest.JarManifestViewer'
}
ただし、生成されたJARファイルにはMain-Class属性が埋め込まれていないので、実行可能JARファイルを生成するには追加の定義が必要です。
実行可能JARファイルの生成¶
jar {
manifest {
attributes(
'Main-Class': 'com.torutk.jarmanifest.JarManifestViewer'
)
}
}