【发布时间】:2014-05-15 16:09:57
【问题描述】:
我有一个项目,布局如下:
abc/
abc-core/
abc-core-actions/
abc-core-actions-a/
src/
abc-core-actions-b/
src/
abc-core-package/
src/
abc-framework/
abc-framework-core/
lib/
abc-framework-dependencies/
lib/
abc-utility/
src/
在abc-framework 项目的lib 文件夹中有一堆 jar,它们代表核心框架和框架运行所需的依赖项。
我想要完成的是abc-core 和abc-utility 下的任何内容,以便他们可以使用lib 罐子。
我发现做这样的事情:
project(':abc-core:abc-core-actions') {
dependencies {
compile fileTree(dir: '../../abc-framework/abc-framework-core/lib', includes: ['*.jar'])
compile fileTree(dir: '../../abc-framework/abc-framework-dependencies/lib', includes: ['*.jar'])
}
}
确实有效,但这意味着对于每个部分(abc-core:abc-core-actions-a、abc-utility 等),我必须包含一个类似上面的部分及其相关部分。
理想情况下,我想定义所有子项目对这些文件夹都有 fileTree 依赖关系,但问题是路径会根据子项目而改变。
那么让compile fileTree 引用abc 项目的绝对路径的最佳方法是什么?
【问题讨论】:
-
类似
project(":abc-framework").projectDir + "/abc-framework-core/lib"? -
谢谢!我最终选择了顶部的
def frameworkCore = "${project.projectDir}/abc-framework/abc-framework-core/lib",然后在dependencies部分的subprojects下选择了compile fileTree(dir: frameworkCore, includes: ['*.jar'])。然后我从我的settings.gradle文件中删除了abc-framework项目,因为它们没有被编译。 -
听起来不错。你想把它写下来作为答案,还是希望我这样写?
-
你可以写出来,我设置为正确。
标签: gradle multi-project