我正在使用gradle 5.1.1,并且在我的多模块项目中具有以下配置
settings.gradle
rootProject.name = 'multi-module-test'
include 'mock-api', 'mock-impl'
build.gradle
group 'com.acme'
version '1.0.0-SNAPSHOT'
subprojects {
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
}
project(':mock-impl') {
dependencies {
// this fails
// api project(':mock-api')
// this succeeds
implementation project(':mock-api')
}
}
由于某些奇怪的原因,如果我使用api
配置,则由于该原因构建失败
Could not find method api() for arguments [project ':mock-api'] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
但是当我使用implementation
配置时,它不会失败
知道为什么会这样吗?
答案 0 :(得分:1)
您遇到此问题是因为您没有使用java-library
插件。看一下gradle文档;
标准Java插件和Java之间的主要区别 库插件是后者引入了API的概念 暴露给消费者。
所以尝试包括;
plugins {
id 'java-library'
}
参考: https://docs.gradle.org/5.1.1/userguide/java_library_plugin.html#header