我有一个带有许多子模块的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"),
)所以我试着直接对他们进行include测试。: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的项目。这是因为它的依赖性是这样配置的:
shared-library/module1/build.gradle
compile(
project(":module2")
)但是,如果我将其更改为一个绝对的项目路径,那么现在shared-library无法自己编译:
shared-library/module1/build.gradle
compile(
project(":shared-library:module2")
)tl;博士,似乎service解析shared-library子模块名称的方式与shared-library的实现方式不匹配。
发布于 2015-12-14 13:19:28
你是对的。您可以导入外部项目,甚至导入外部子项目,并在主项目中引用它们,但一旦编译了外部实体,它们就无法使用预期的名称进行解析。
我发现您可以在主项目中重命名外部项目,以便它们与外部项目的名称相匹配。这样,您的主项目和外部项目使用相同的名称。
将service/settings.gradle更改为:
include "shared-library"
project(":shared-library").projectDir = new File("/projects/shared-library")
include "shared-library:module2"
project('shared-library:module2').name = ':module2'
include "shared-library:module1"
project('shared-library:module1').name = ':module1'现在,在您的项目和外部项目中,请将您的模块称为:module1和:module2。在service/build.gradle中使用:
compile(project(":module1"))https://stackoverflow.com/questions/28770024
复制相似问题