Gradle 4.x API而不是实现-如何使用Gradle API特性公开内部依赖关系
我使用的是Gradle4.x,这是我的问题 我有两个模块A和B 模块B的项目依赖于模块A。以下是gradle文件 模块A的build.gradleGradle 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
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文件中删除该条目