Gradle 复合构建找不到包含的项目依赖项
Gradle composite build cannot find included project dependency
我正在尝试设置复合版本。当前结构是
projectA
-build.gradle
-settings.gradle
-app
-build.gradle
projectB
-buid.gradle
-settings.gradle
-sdk
-build.gradle
我需要将 projectB 用作 projectA 的依赖项,但是,projectB 仍需要作为独立项目运行。
这是我目前拥有的
ProjectA settings.gradle 包含
includeBuild('../projectB')
ProjectA build.gradle 包含
group "com.example"
projectA:App build.gradle 包含
dependencies {
implementation 'com.example:projectB'
}
项目 B build.gradle 包含
group "com.example"
但是,当我尝试构建项目 A 时,出现错误:
Could not resolve com.example:projectB.
Required by:
project :app
我在这里做错了什么?我觉得它与 'com.example' 有关,但我无法弄清楚将包含的项目作为依赖项引用的正确方法是什么。
你没有替换项目A中的依赖,你可以参考本节示例6:https://docs.gradle.org/current/userguide/composite_builds.html#included_build_declaring_substitutions
在您的情况下,您希望将项目 A 的 settings.gradle 文件修改为如下所示:
includeBuild('../projectB') {
dependencySubstitution {
substitute module("com.example:projectB") using project(':projectB')
}
}
这将告诉 gradle 在配置阶段,它应该用 ../projectB 中的项目 :projectB 替换对 com.example:projectB 的任何依赖。
综上所述,看来您确实有兴趣包含projectB 中定义的sdk 模块。如果是这种情况,您可以将 using project(':projectB')
替换为 using project(':sdk')
我正在尝试设置复合版本。当前结构是
projectA
-build.gradle
-settings.gradle
-app
-build.gradle
projectB
-buid.gradle
-settings.gradle
-sdk
-build.gradle
我需要将 projectB 用作 projectA 的依赖项,但是,projectB 仍需要作为独立项目运行。
这是我目前拥有的
ProjectA settings.gradle 包含
includeBuild('../projectB')
ProjectA build.gradle 包含
group "com.example"
projectA:App build.gradle 包含
dependencies {
implementation 'com.example:projectB'
}
项目 B build.gradle 包含
group "com.example"
但是,当我尝试构建项目 A 时,出现错误:
Could not resolve com.example:projectB.
Required by:
project :app
我在这里做错了什么?我觉得它与 'com.example' 有关,但我无法弄清楚将包含的项目作为依赖项引用的正确方法是什么。
你没有替换项目A中的依赖,你可以参考本节示例6:https://docs.gradle.org/current/userguide/composite_builds.html#included_build_declaring_substitutions
在您的情况下,您希望将项目 A 的 settings.gradle 文件修改为如下所示:
includeBuild('../projectB') {
dependencySubstitution {
substitute module("com.example:projectB") using project(':projectB')
}
}
这将告诉 gradle 在配置阶段,它应该用 ../projectB 中的项目 :projectB 替换对 com.example:projectB 的任何依赖。
综上所述,看来您确实有兴趣包含projectB 中定义的sdk 模块。如果是这种情况,您可以将 using project(':projectB')
替换为 using project(':sdk')