gpt4 book ai didi

Gradle - 递归包含外部项目及其子项目

转载 作者:行者123 更新时间:2023-12-04 04:19:24 27 4
gpt4 key购买 nike

我有一个 gradle 项目,其中包含许多名为 shared-library 的子模块.

我有一个名为 service 的项目这取决于 shared-library 的模块之一.例如,它取决于 :shared-library:module1 .通常,我从 maven 获得这种依赖关系。

现在我要修改shared-library并使用依赖项目测试我的更改。而不是对 shared-library 进行更改,构建,部署到 maven,然后重建我的 service ,我想改为 service取决于 shared-library直接毕业项目。

所以我发现你可以将 gradle 指向文件系统上的任意项目目录:

服务/settings.gradle

include "shared-library"
project(":shared-library").projectDir = new File("/projects/shared-library")

但是当我这样做时,项目不知道 shared-library的子模块。我不能做到这一点:

服务/build.gradle
compile(
project(":shared-library:module1"),
)

所以我尝试了 include直接 ing 他们。 :shared-library:module1取决于 :shared-library:module2所以我也包括那个:

服务/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;博士 ,似乎 service的方式不匹配解决 shared-library子模块名称和方法 shared-library可以。

最佳答案

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

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

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

关于Gradle - 递归包含外部项目及其子项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28770024/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com