单独的组合构建中的依赖替换

问题描述 投票:0回答:2

包含构建依赖项替换对于它包含在其中的项目非常有效

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 中定义的依赖模块不会被替换。

有办法让它发挥作用吗?

android gradle build composite
2个回答
0
投票

当您将

include ':app'
更改为
includeBuild './app_project'
时,这两个项目就变得相互独立了。所以你应该输入:

includeBuild('../lib_project') {
    dependencySubstitution {
        substitute module('com.github.myname:lib_project_name') using project(':lib')
    }
}

改为

app_project
settings.gradle


0
投票

本文档解释并提供了有关 Composite Builds 声明的替代品

的示例

在复合构建中,确保所有子项目在每个模块各自的 build.gradle.kts 文件中定义了 ${project.group} 。 或者在根 build.gradle.kts 文件中的 subproject{} 中添加该组。

如果完成此操作,依赖项将使用以下格式

implementation("${project.group}:${project.name}")

dependencySubstitution {}仅适用于依赖模块undefined:unpublished('undefined'是project.group的默认值,'unpublished'是根项目名称)。也就是说,如果项目的组和名称未定义。

© www.soinside.com 2019 - 2024. All rights reserved.