ぺんぎんらぼ

お笑いとマンガ好きなしょぼしょぼWeb系エンジニアの日記です。たまに絵を描きます。

お笑いとマンガ好きなしょぼしょぼWeb系エンジニアの日記です

GradleのJavaプラグインの種類

GradleでJavaを開発するときに使用するプラグイン

の二種類があります。

java プラグイン

plugins {
    id 'java-library'
}

Gradle 1.0から使用できるプラグインで、最新のGradle9系でも使用できます。

java-library プラグイン

plugins {
    id 'java-library'
}

javaプラグインの上位互換です。
Gradle 3.4(2017年3月リリース)で追加された比較的新しいプラグインです。
Gradle 3.4以降で利用可能で、それ以前(Gradle 3.3以下)では利用できません。

依存関係の指定方法

依存関係 (dependency) で指定できる依存方法がプラグインにより違いがあります。
java-libraryプラグインでは、新たな依存方法のapiが使用できます。

定義名 javaプラグイン java-libraryプラグイン 用途・説明 備考
implementation 内部実装依存。外部には公開されない 新方式(推奨)
compileOnly コンパイル時のみ必要。実行時には不要 新方式(推奨)
runtimeOnly 実行時のみ必要。コンパイルには不要 新方式(推奨)
testImplementation テスト時の内部実装依存 新方式(推奨)
testCompileOnly テスト時のコンパイルのみ依存 新方式(推奨)
testRuntimeOnly テスト時の実行時のみ依存 新方式(推奨)
api × ライブラリのAPIとして公開される依存 java-libraryのみ
compile コンパイル時依存(実行時も含む) 旧方式(非推奨、廃止予定)
testCompile テストのコンパイル時依存(実行時も含む) 旧方式(非推奨、廃止予定)
runtime 実行時依存 旧方式(非推奨、廃止予定)
testRuntime テスト実行時依存 旧方式(非推奨、廃止予定)

どちらを使うべきか

java-libraryプラグインjavaプラグインの完全互換であるため、通常はjava-libraryプラグインを使用するのが良いでしょう。
あまりないケースですが、Gradle 3.3以下を使用する必要がある場合、java-libraryプラグインは使用できないので、javaプラグインを使うことになります。