我正在尝试将 Gradle 多项目存储库作为 git 子模块导入到另一个 Gradle 项目中。
这是多项目存储库的结构:
MyLibrary
- lib-api
- api-config
- api-repository
- lib-impl
- impl-config
- impl-repository
在 Gradle 项目中MyLibrary,有几个模块依赖于该项目中的其他模块。例如,lib-api:api-repository具有以下依赖关系:
implementation project(':lib-api:api-config')
(下面的模块lib-impl还包含各自的 api 作为依赖项)
到目前为止一切正常,我可以构建、运行和测试lib-impl.
现在我尝试将项目导入到另一个项目中
我用来git submodule add添加MyLibrary到MyProject. 这是现在的结构:
MyProject
- MyLibrary
- lib-api
- api-config
- api-repository
- lib-impl
- impl-config
- impl-repository
- api
- impl
为了能够使用 下的模块MyLibrary,我将settings.gradle文件编辑MyProject为如下所示:
rootProject.name = 'MyProject'
include 'api'
include 'impl'
include 'mylibrary'
include 'mylibrary:lib-api'
include 'mylibrary:lib-impl'
include 'mylibrary:lib-api:api-config'
include 'mylibrary:lib-api:api-repository'
include 'mylibrary:lib-impl:impl-config'
include 'mylibrary:lib-impl:impl-repository'
问题
现在,下面的模块MyLibrary属于根项目MyProject,其中的所有内部依赖项都MyLibrary需要以 为前缀:mylibrary。但这仅适用于MyLibrary当前是另一个项目的子模块的情况。
为了构建MyProject,我需要更改内部的依赖关系MyLibrary:
implementation project(':lib-api:api-config')
implementation project(':lib-api:api-repository')
对此:
implementation project(':mylibrary:lib-api:api-config')
implementation project(':mylibrary:lib-api:api-repository')
但是,:mylibrary不需要存在即可MyLibrary自行成功编译(即,如果MyLibrary是根项目)。MyLibrary但要作为子模块工作,需要进行此更改。
这曾经不是一个大问题,因为我总是可以拉出子模块MyLibrary并编辑必要的build.gradle文件。MyLibrary然而,我现在开始尝试设置持续集成,每当我尝试构建时,我都会收到有关这些导入在内部无效的错误,MyProject因为 CI 总是直接从 git 存储库获取代码。
我觉得如果以下声明是有效的,它可以解决我的问题:
implementation project(':mylibrary:lib-api:api-config').ifNotPresent(':lib-api:api-config')
预先感谢您的任何帮助
幕布斯7119047
相关分类