java - gradle 中的多模块项目编译失败

标签 java gradle multi-module

我正在使用 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/

相关文章:

java - 在 grails 应用程序中包含 jar list 的类路径

android - 升级到新版flutter时出现 “:app:transformClassesWithDexBuilderForDebug”错误

java - 正则表达式非单词边界和空格

java - 是否可以附加 2 个富文本字符串?

java - 相同的场景 - Java 的 StaleElementReferenceException,但 Watir 没问题

gradle - 如何避免 AWS SAM 重建并重新上传代码不变的 gradle 函数?

java - 错误: unmappable character (0x98) for encoding windows-1251

java - Maven 多模块依赖项,- 包不存在(maven 插件类加载器)

maven-2 - Maven 多模块和 EAR 可以很好地协同工作吗?

eclipse - 在 Eclipse 中使用 Jetty Maven 插件在多模块项目 : Compilation unit not on the build path 上进行调试