如何使用 gradle 'api' 依赖项

Nir*_*hel 4 java gradle

我尝试在我的项目中使用 'api' 依赖关键字,但是我收到这个错误,说它找不到方法 api()

我在一个新项目上尝试过。这是 build.gradle 文件:

plugins {
    id 'java'
}

group 'com.test'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    api group: 'com.google.guava', name: 'guava', version: '27.0.1-jre'
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 gradle V4.9。当我运行 gradle build 时,我得到了这个:

Could not find method api() for arguments [{group=com.google.guava, name=guava, version=27.0.1-jre}] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler
Run Code Online (Sandbox Code Playgroud)

如果我用“实现”替换“api”,一切正常

我在这里缺少什么?有什么需要做的设置吗?

M.R*_*uti 9

api配置来自java-library插件,在你刚才应用构建脚本java插件。请参阅https://docs.gradle.org/current/userguide/java_library_plugin.html

标准 Java 插件和 Java 库插件之间的主要区别在于后者引入了向消费者公开的 API 的概念。库是供其他组件使用的 Java 组件。这是多项目构建中的一个非常常见的用例,但只要您有外部依赖项。

只需应用java-library插件(扩展java插件),它应该可以工作:

plugins {
    id 'java-library'
}
Run Code Online (Sandbox Code Playgroud)