我有一个gradle项目,其中包含许多名为的子模块shared-library.
我有一个名为service依赖于其中一个模块的项目shared-library.例如,它取决于:shared-library:module1.通常,我从maven获得这种依赖.
现在我想shared-library使用依赖项目修改和测试我的更改.而不是改变shared-library,构建,部署到maven,然后重建我service,我想直接service依赖shared-librarygradle项目.
所以我发现你可以将gradle指向文件系统上的任意项目目录:
服务/ settings.gradle
include "shared-library"
project(":shared-library").projectDir = new File("/projects/shared-library")
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,该项目并不知道shared-library子模块.我不能做到这一点:
服务/的build.gradle
compile(
project(":shared-library:module1"),
)
Run Code Online (Sandbox Code Playgroud)
所以我include直接尝试了它们.: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"
Run Code Online (Sandbox Code Playgroud)
但是现在当我尝试运行它时,它抱怨:shared-library:module1无法找到一个名为的项目:module2.这是因为它的依赖关系配置如下:
共享库/模块1 /的build.gradle
compile(
project(":module2")
)
Run Code Online (Sandbox Code Playgroud)
但是,如果我将其更改为绝对项目路径,现在shared-library无法自行编译:
共享库/模块1 /的build.gradle
compile(
project(":shared-library:module2")
)
Run Code Online (Sandbox Code Playgroud)
tl; dr,似乎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'
Run Code Online (Sandbox Code Playgroud)
现在,在您的项目和外部项目中,始终将您的模块称为:module1和:module2。正在service/build.gradle使用:
compile(project(":module1"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1095 次 |
| 最近记录: |