プロジェクト

全般

プロフィール

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'
    )
    }
}