【发布时间】:2018-08-12 11:45:57
【问题描述】:
我有一个Java项目结构如下:
- root-directory (has no .gradle file)
- project_1
- build.gradle
- settings.gradle
- project_2
- build.gradle
- settings.gradle
- project_3
- build.gradle
- settings.gradle
project_2依赖project_1,这个依赖定义如下:
- project_2/build.gradle
implementation(project(":project_1"))
- project_2/settings.gradle
include(":project_1")
project(":project_1").projectDir = new File("../project_1")
并且,project_3 依赖于project_2,这个依赖定义如下:
- project_3/build.gradle
implementation(project(":project_2"))
- project_3/settings.gradle
include(":project_2")
project(":project_2").projectDir = new File("../project_2")
现在,当我通过在./project_3/ 目录中运行>> ./gradlew build 终端命令来构建project_3 时,会出现以下错误:
A problem occurred evaluating project ':project_2'.
> Project with path ':project_1' could not be found in project ':project_2'.
我希望能够从它自己的目录构建每个项目。我该如何解决这个问题?
更新:我尝试通过添加以下内容将root-directory 转换为项目根目录:
- root-directory/settings.gradle
rootProject.name = "root"
include(":project_1", ":project_2", ":project_3")
- root-directory/build.gradle
// Nothing in this file
并从所有子项目的settings.gradle 文件中删除了project(":project_#").projectDir = new File("../project_#") 行。但即使在此之后,来自每个单独项目目录的构建命令也不起作用。
【问题讨论】:
-
必须有一个根项目,因此只有一个settings.gradle文件,所有命令必须从根目录执行。例如 =
./gradlew build构建所有项目,或./gradlew :project_1:build仅构建 project_1。 docs.gradle.org/current/userguide/multi_project_builds.html -
@JBNizet 谢谢,成功了。
-
快速更正:命令不必从根项目执行。您应该能够从任何项目目录运行
gradle build。如果你正在使用它,你只需要调整包装脚本的路径。