web-dev-qa-db-ja.com

「実装」が有効な場合、Gradle 4.4 / Javaプラグインで「api」メソッドを使用できないのはなぜですか?

私はAS 3.1を使用していて、優れたプログラマーになり、「コンパイルは廃止されました」という警告をクリアしようとしています。しかし、私はこの特定の.jarがAPIとしてGuavaを公開することを望んでいます。他のプロジェクト(CloudServerApplicationなど)にもGuavaが必要です。しかし、apiまたはcompileの代わりにimplementationキーワードを使用すると、次のようになります。

>gradlew FrameManager:build

> Configure project :CloudServerApplication
4.4

> Configure project :FrameManager
4.4


FAILURE: Build failed with an exception.

* Where:
Build file 'C:\FrameManager\app\build.gradle' line: 16

* What went wrong:
A problem occurred evaluating project ':FrameManager'.
> Could not find method api() for arguments [com.google.guava:guava:14+] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

エラーをグーグルで試しましたが、有用なものは何も見つかりませんでした。次にどこを見ればいいのか本当にわからない。

私のbuild.gradle:

apply plugin: 'Java'

println GradleVersion.current().getVersion()

repositories {
    jcenter()
}

dependencies {
    implementation 'org.json:json:20160212'
    api 'com.google.guava:guava:14+'   //<-- This used to be "compile"
}
21
greeble31

引数のメソッドapi()が見つかりませんでした

Javaプラグインには、このメソッドは含まれていません。

あなたはこのプラグインを使用する必要があります

apply plugin: 'Java-library'

公式ドキュメント で確認できるように:

標準のJavaプラグインとJavaライブラリプラグインの主な違いは、後者がコンシューマに公開されるAPIの概念を導入することです。ライブラリは= Javaコンポーネントは、他のコンポーネントによって使用されることを意図しています。これは、マルチプロジェクトビルドでの非常に一般的な使用例ですが、外部依存関係があるとすぐに。

プラグインは、依存関係を宣言するために使用できる2つの構成を公開します:apiとimplementation

19