我正在使用 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
配置,构建会因此失败
在 org.gradle.api.internal.artifacts.dsl.dependency.DefaultDependencyHandler 类型的对象上找不到参数 [project ':mock-api'] 的方法 api()。
但是当我使用实现
配置时它不会失败
知道为什么会出现这种情况吗?
最佳答案
您遇到此问题是因为您没有使用 java-library
插件。看看 gradle 文档,它说;
The key difference between the standard Java plugin and the Java Library plugin is that the latter introduces the concept of an API exposed to consumers.
所以尝试包括;
plugins {
id 'java-library'
}
引用: https://docs.gradle.org/5.1.1/userguide/java_library_plugin.html#header
关于java - gradle 中的多模块项目编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54595258/