包含构建依赖项替换对于它包含在其中的项目非常有效
include ':app'
includeBuild('../lib_project') {
dependencySubstitution {
substitute module('com.github.myname:lib_project_name') using project(':lib')
}
}
:app 项目中定义的依赖模块被正确替换。
但它不适用于单独的组合构建,即当两个项目都包含在更高级别的组合中时:
includeBuild('../app_project')
includeBuild('../lib_project') {
dependencySubstitution {
substitute module('com.github.myname:lib_project') using project(':lib')
}
}
在这种情况下,app_project:app 中定义的依赖模块不会被替换。
有办法让它发挥作用吗?
当您将
include ':app'
更改为 includeBuild './app_project'
时,这两个项目就变得相互独立了。所以你应该输入:
includeBuild('../lib_project') {
dependencySubstitution {
substitute module('com.github.myname:lib_project_name') using project(':lib')
}
}
改为
app_project
的 settings.gradle
。
本文档解释并提供了有关 Composite Builds 声明的替代品
的示例在复合构建中,确保所有子项目在每个模块各自的 build.gradle.kts 文件中定义了 ${project.group} 。 或者在根 build.gradle.kts 文件中的 subproject{} 中添加该组。
如果完成此操作,依赖项将使用以下格式
implementation("${project.group}:${project.name}")
dependencySubstitution {}仅适用于依赖模块undefined:unpublished('undefined'是project.group的默认值,'unpublished'是根项目名称)。也就是说,如果项目的组和名称未定义。