【发布时间】:2015-02-27 16:42:12
【问题描述】:
我有一个 gradle 项目,其中包含许多名为 shared-library 的子模块。
我有一个名为service 的项目,它依赖于shared-library 的模块之一。例如,它取决于:shared-library:module1。通常,我从 maven 获得此依赖项。
现在我想修改shared-library 并使用依赖项目测试我的更改。我不想更改shared-library,构建、部署到maven,然后重建我的service,而是让service 依赖shared-library gradle 项目直接。
所以我发现你可以将 gradle 指向文件系统上的任意项目目录:
service/settings.gradle
include "shared-library"
project(":shared-library").projectDir = new File("/projects/shared-library")
但是当我这样做时,项目不知道shared-library 的子模块。我不能这样做:
service/build.gradle
compile(
project(":shared-library:module1"),
)
所以我直接尝试includeing 他们。 :shared-library:module1 取决于 :shared-library:module2 所以我也包括了那个:
service/settings.gradle
include "shared-library"
project(":shared-library").projectDir = new File("/projects/shared-library")
include "shared-library:module2"
include "shared-library:module1"
但是现在当我尝试运行它时,它抱怨:shared-library:module1 找不到名为:module2 的项目。这是因为它的依赖是这样配置的:
共享库/module1/build.gradle
compile(
project(":module2")
)
但如果我将其更改为绝对项目路径,现在shared-library 无法自行编译:
共享库/module1/build.gradle
compile(
project(":shared-library:module2")
)
tl;dr,service 解析 shared-library 子模块名称的方式与 shared-library 的解析方式似乎不匹配。
【问题讨论】:
标签: gradle