Gradle 4.x API而不是实现-如何使用Gradle API特性公开内部依赖关系

Gradle 4.x API而不是实现-如何使用Gradle API特性公开内部依赖关系,gradle,Gradle,我使用的是Gradle4.x,这是我的问题 我有两个模块A和B 模块B的项目依赖于模块A。以下是gradle文件 模块A的build.gradle apply plugin: 'java-library' dependencies { implementation group: 'org.springframework.boot', name: 'spring-boot-starter' implementation group: 'org.springframework.ka

我使用的是Gradle4.x,这是我的问题

我有两个模块A和B

模块B的项目依赖于模块A。以下是gradle文件

模块A的build.gradle

apply plugin: 'java-library'

dependencies {
    implementation group: 'org.springframework.boot', name: 'spring-boot-starter'
    implementation group: 'org.springframework.kafka', name: 'spring-kafka' , version: '2.2.7.RELEASE'
    implementation group: 'org.springframework.cloud', name: 'spring-cloud-spring-service-connector'
    implementation group: 'org.springframework.cloud', name: 'spring-cloud-cloudfoundry-connector'

    testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test'
    testImplementation group: 'io.github.benas', name: 'random-beans', version: '3.7.0'
}

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

artifacts {
    archives sourcesJar
}
这是模块B的build.gradle

dependencies {
    implementation project(':moduleA')

    implementation group: 'org.springframework.boot', name: 'spring-boot-starter'
    implementation group: 'org.springframework.kafka', name: 'spring-kafka' , version: '2.2.7.RELEASE'
    implementation group: 'org.springframework.cloud', name: 'spring-cloud-spring-service-connector'
    implementation group: 'org.springframework.cloud', name: 'spring-cloud-cloudfoundry-connector'

    testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test'
    testImplementation group: 'io.github.benas', name: 'random-beans', version: '3.7.0' }

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

artifacts {
    archives sourcesJar
}
如果您观察模块B的build.gradle文件,我对spring kafka有依赖关系,但它是重复的,因为它已经在模块a build.gradle中。 现在,当模块B的jar文件被另一个应用程序使用时,如何使用gradle API选项公开spring kafka(来自模块A),而不在模块B的build.gradle中实际提及它


请提出建议。

这在文档中有解释(重点是我的):

该插件公开了两种可用于声明依赖关系的方法:
api
implementation
应使用
api
配置来声明库api导出的依赖项,而
实现
配置应用于声明组件内部的依赖项

因此,只需将
模块a
中的
实现更改为
api

api group: 'org.springframework.kafka', name: 'spring-kafka' , version: '2.2.7.RELEASE'
然后从
moduleB
的Gradle文件中删除该条目