是否可以指定Gradle(在android studio中)对当前项目边界之外的另一个Gradle项目的依赖?例如,对于像这样的相对路径:
dependencies {
compile project('../../stdlib/dagger')
}
所以我尝试的是这样的:
我有一个Android应用。结构如下所示:
- MyApp(路径为/Users/foo/workspace/MyApp)
- app(路径为/Users/foo/workspace/MyApp/app)
和我有一个gradle android库项目包含3个子模块:
- 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的符号链接,但我没有按预期工作:
- MyApp(路径为/Users/foo/workspace/MyApp)
- app(路径为/Users/foo/workspace/MyApp/app)
- libraries(符号链接到/Users/foo/workspace/stdlib)
dependencies { compile project(':libraries:dagger') }
你知道如何在gradle中解决这样的依赖吗?
您可以使用'settings '包含外部根项目模块。Gradle '文件从你的主项目。它也必须是一个gradle项目,并且在特定的Android构建情况下,你必须将每个模块配置为"Android -library"插件项目。
例如,在'MyApp'项目设置中。Gradle你可以试试这个:
include 'app'
include 'dagger'
project(':dagger').projectDir = new File('/Users/foo/workspace/stdlib/dagger')
你的"MyApp"构建。gradle必须以相对路径的gradle方式反映'dagger'模块的需求:
dependencies {
compile project(':dagger')
}
就是这样。对你需要的每个外部模块重复这个步骤,你就会有一个合适的Gradle多项目配置。