web-dev-qa-db-ja.com

Gradle 7.0以降で依存関係のあるJarファイルを作成する方法

現在のjar in build.gradleは以下のようになります:

jar {
manifest {
    attributes "Main-Class": "hoge.Main"
}
    from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}

そしてよく働く。

しかし、私はGradleからのメッセージを持っています(多分6+以降?)

これは実際のメッセージです:

The compile configuration has been deprecated for dependency declaration. This will fail with an error in Gradle 7.0. Please use the implementation configuration instead.

一部 configurations.compileは非推奨です。

どうすれば更新できますか?

変更した場合

jar {
manifest {
    attributes "Main-Class": "hoge.Main"
}
    from configurations.implementation.collect { it.isDirectory() ? it : zipTree(it) }
}

Gradleさんのコメント> Resolving configuration 'implementation' directly is not allowed

2
kensuke1984

compile構成はimplementationの代わりに廃止されました。

docs を参照してください。

3
smac89

Gradle構成を7.0+形式にアップグレードしたい場合は、compileimplementationまたはapiに置き換えるだけで、Javaプラグイン。 Java-libraryプラグインを使用する必要があります。 ドキュメント

gradle.configを次のように置き換えます。

apply plugin: 'Java'

と:

apply plugin: 'Java-library'

非推移的な依存関係にはimplementationを使用し、推移的な依存関係にはapiを使用します(依存関係がプロジェクトの依存関係によって直接消費される場合)。

1
Andrei

あなたの場合、compileruntimeClasspathに置き換える必要があります。

Gradleの以前のバージョンでは、compileの責任が多すぎました。

  • 依存関係を宣言する
  • コンパイルクラスパスとして解決
  • 消費プロジェクトに公開

依存関係の宣言のためにimplementationに置き換えられました。解決のために何かに置き換える必要もあります。

ただし、あなたのケースでは、コンパイルしたものではなくruntimeの依存関係をパッケージ化したいと思うでしょう。したがって、解決する構成としてruntimeClasspathを使用する必要があります。そして、compileClasspath依存関係を含まないruntimeOnlyではありません。

1
Louis Jacomet