Я использую AS 3.1, пытаясь быть хорошим программистом и убираю предупреждения "компиляция устарела". Но я хочу, чтобы этот конкретный .jar представлял Guava как API. Другие проекты (например, 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"
}




Could not find method api() for arguments
Плагин java не содержит этого метода.
Вы нужно использовать этот плагин:
apply plugin: 'java-library'
Как вы можете проверить в официальный документ:
The key difference between the standard Java plugin and the Java Library plugin is that the latter introduces the concept of an API exposed to consumers. A library is a Java component meant to be consumed by other components. It’s a very common use case in multi-project builds, but also as soon as you have external dependencies.
The plugin exposes two configurations that can be used to declare dependencies: api and implementation.