在gradle这个多模块项目失败时,编译

问题描述 投票:1回答:1

我使用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 gradle multi-module
1个回答
1
投票

因为你不使用java-library插件,你面临这样的问题。看一看在gradle这个文档,它说;

标准的Java插件和Java库插件之间的主要区别在于后者介绍暴露给消费者一个API的概念。

因此,尝试包括;

 plugins {
    id 'java-library'
}

参考:https://docs.gradle.org/5.1.1/userguide/java_library_plugin.html#header

© www.soinside.com 2019 - 2024. All rights reserved.