Java gradle中的多模块项目在

Java gradle中的多模块项目在,java,gradle,multi-module,Java,Gradle,Multi Module,我正在使用gradle 5.1.1&在我的多模块项目中有以下配置 settings.gradle rootProject.name = 'multi-module-test' include 'mock-api', 'mock-impl' group 'com.acme' version '1.0.0-SNAPSHOT' subprojects { apply plugin: 'java' sourceCompatibility = 1.8 repositories {

我正在使用gradle 5.1.1&在我的多模块项目中有以下配置

settings.gradle

rootProject.name = 'multi-module-test'

include 'mock-api', 'mock-impl'
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')
  }
}
build.gradle

rootProject.name = 'multi-module-test'

include 'mock-api', 'mock-impl'
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
configuration,那么构建会因为这个原因而失败

在org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler类型的对象上找不到参数[project:mock api']的方法api()

但当我使用
实现
配置时,它不会失败


你知道为什么会这样吗?

你会面临这个问题,因为你没有使用
java库
插件。看看gradle文档,它说

标准Java插件和Java 库插件是后者引入了API的概念 接触消费者

因此,尝试包括

 plugins {
    id 'java-library'
}
参考: