是否可以在 Gradle(在 android studio 中)指定对当前项目边界之外的另一个 gradle 项目的依赖?例如,相对路径是这样的:
dependencies {
compile project('../../stdlib/dagger')
}
所以我尝试的是这样的:
我有一个 Android 应用程序。结构如下:
- MyApp(路径为/Users/foo/workspace/MyApp)
- app(路径为/Users/foo/workspace/MyApp/app)
我有一个包含 3 个子模块的 gradle android 库项目:
- stdlib(路径是/Users/foo/workspace/stdlib)
- dagger(路径为/Users/foo/workspace/stdlib/dagger)
- utils(路径为/Users/foo/workspace/stdlib/utils)
- http(路径为/Users/foo/workspace/stdlib/http)
我想要的是将dagger、utils、http模块编译到MyApp项目中。
stdlib 库模块正在大量开发中,并将随着 MyApp 的增长而增长。因此,我不想每次进行一些更改时都将它们推送到 maven 存储库中。
那么有没有可能以某种方式链接其他 gradle 项目? 我正在寻找一个临时解决方案。一旦源稳定,我会将std库推送到maven存储库中。
此外,作为解决方法,使用 sourceSet 的解决方案也是可能的。我还考虑在 MyApp 中创建一个库文件夹,它是 stdlib 的符号链接(symbolic link),但我没有让它按预期工作:
- MyApp(路径为/Users/foo/workspace/MyApp)
- app(路径为/Users/foo/workspace/MyApp/app)
- 库(到/Users/foo/workspace/stdlib 的符号链接(symbolic link))
dependencies { compile project(':libraries:dagger') }
知道如何在 gradle 中解决这种依赖关系吗?
最佳答案
您可以使用主项目中的“settings.gradle”文件包含外部根项目模块。它也必须是一个 gradle 项目,并且在特定的 Android 构建情况下,您必须将每个模块配置为“android-library”插件项目。
例如,在 'MyApp' 项目 settings.gradle 你可以试试这个:
include 'app'
include 'dagger'
project(':dagger').projectDir = new File('/Users/foo/workspace/stdlib/dagger')
您的“MyApp”build.gradle 必须以相对路径 Gradle 方式反射(reflect)“dagger”模块的需要:
dependencies {
compile project(':dagger')
}
就是这样。对您需要的每个外部模块重复此步骤,您将拥有正确的 Gradle 多项目配置。
关于java - Gradle 依赖项 : compile project by relative path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975745/