子项目依赖关系失败与Gradle

时间:2018-05-04 18:22:08

标签: gradle dependency-management multi-module multi-project

我正在努力使用Gradle和以下项目结构的构建配置(非常简单......):

/projA
   /projB
   /projC

projC使用projB中的类。

在projA / settings.gradle中:

include 'projB'
include 'projC'

在projC / build.gradle中:

dependencies{
 compile project(':projB')
}

在IntelliJ中我没有依赖项解析的问题,但是当我在projA中运行./gradlew构建时,我遇到了编译错误:

ClassC: Unresolved reference: ClassB

(其中ClassC是projC的类,它在使用ClassB时是失败的,这是一个来自projB的类,显然......)

请注意,代码是用Kotlin语言编写的,我在IntelliJ(spring boot run)中运行应用程序没有任何问题,但是使用Gradle的任何构建都会给我一个错误(在Intellij和命令行中)。< / p>

我错过了什么?

此致 阿德里安

1 个答案:

答案 0 :(得分:0)

rootProject添加额外的顶级目录是一种常见的Gradle习惯用法。这是一个特殊项目,它是构建中所有其他项目的父项,位于multi-project build

这就是您的settings.gradle文件的位置:

include ':projA:projB'
include ':projA:projC'

然后,我建议将projA作为rootProject的子目录,因此您的层次结构将如下所示:

/myProject
  settings.gradle
  /projA
    build.gradle
    /projB
      build.gradle
    /projC
      build.gradle

此外,在projC/build.gradle中,您还需要:

dependencies {
  compile project(':projA:projB')
}

应该这样做。