【问题标题】:Gradle - Recursively include external project and its subprojectsGradle - 递归包含外部项目及其子项目
【发布时间】: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;drservice 解析 shared-library 子模块名称的方式与 shared-library 的解析方式似乎不匹配。

【问题讨论】:

    标签: gradle


    【解决方案1】:

    你是对的。您可以导入外部项目,甚至是外部子项目,并在主项目中引用它们,但是一旦您编译外部实体,它们就无法使用预期的名称解析。

    我发现您可以在主项目中重命名外部项目,使它们与外部项目的名称相匹配。这样您的主项目和外部项目使用相同的名称。

    将您的 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"))
    

    【讨论】:

    • 我忘了我问了这个问题!我最终自己找到了这个解决方案,但决定将快照安装到我的本地 maven 存储库更易于使用。但我仍然会接受你的回答,因为这是目前的方法。
    猜你喜欢
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 2018-07-11
    • 2016-05-06
    • 2013-02-16
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    相关资源
    最近更新 更多