我使用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
配置不会失败
任何想法,为什么是这样的话?
因为你不使用java-library
插件,你面临这样的问题。看一看在gradle这个文档,它说;
标准的Java插件和Java库插件之间的主要区别在于后者介绍暴露给消费者一个API的概念。
因此,尝试包括;
plugins {
id 'java-library'
}
参考:https://docs.gradle.org/5.1.1/userguide/java_library_plugin.html#header