【问题标题】:Gradle project dependenciesGradle 项目依赖项
【发布时间】:2017-12-22 20:33:04
【问题描述】:

我有 3 个独立的 Gradle 项目 - x 取决于 y 取决于 z

x/settings.gradle

include ':y'
project(':y').projectDir = new File('../y')

x/build.gradle

apply plugin: 'java'

y/settings.gradle

include ':z'
project(':z').projectDir = new File('../z')

y/build.gradle

apply plugin: 'java'
dependencies {
    compile project(':z')
}

当我在 x 目录中运行 gradlew build 时,出现错误

* Where:
Build file 'C:\Temp\idea\y\build.gradle' line: 4

* What went wrong:
A problem occurred evaluating project ':y'.
  Project with path ':z' could not be found in project ':y'.

但是在y目录下运行gradlew build是成功的。

应该如何配置xy以避免y的依赖影响x

【问题讨论】:

  • 你不应该在一个项目中有多个 settings.gradle 文件。
  • 那么,还有其他方法可以创建这样的依赖链吗?
  • 当然。唯一的 settings.gradle 定义了构建中包含的所有项目。依赖项在每个项目构建文件中声明。
  • 如何在 y/build.gradle 而不是 y/settings.gradle 中定义 z 的项目路径?
  • 你读过关于多项目构建的 gradle 手册吗?它解释了一切,包括结构。

标签: gradle dependencies build-dependencies


【解决方案1】:

这不是 Gradle 中多项目构建的工作方式。

简而言之,你不能有多个settings.gradle,只有一个在父项目的根目录。

在该设置文件中,您将定义不同的模块:

include ':x', ':y', ':z'

请注意,以上内容隐含地假设这 3 个项目位于名为 xyZ 的文件夹中,它们是 settings.gradle 文件的兄弟。

Gradle 包装器也应该在该根级别定义,而不是其他任何地方。

并且在不更改每个项目中的 build.gradle 文件的情况下,在该根文件夹中调用 ./gradlew build 应该会产生您所期望的结果。

查看Gradle documentation on multi project builds了解更多详情。

【讨论】:

    猜你喜欢
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 2018-11-10
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多