我的项目布局如下:
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/
在lib
项目的abc-framework
个文件夹中有一堆罐子,它们代表了框架运行所需的核心框架和依赖关系。
我想要完成的是在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
项目的绝对路径的最佳方法是什么?
答案 0 :(得分:3)
您可以使用任何项目的内置projectDir
属性来构建相对于您的某个项目的绝对路径,假设您的所有项目都参与相同的多项目构建。
因此,如果您在顶级build.gradle
目录中有abc
个文件,那么可能看起来像这样(基于您上面的评论):
//"project" here equates to the root project, i.e. "abc"
def frameworkCore = "${project.projectDir}/abc-framework/abc-framework-core/lib"
def frameworkDeps = "${project.projectDir}/abc-framework/abc-framework-dependencies/lib"
subprojects {
dependencies {
compile fileTree(dir: frameworkCore, includes: ['*.jar'])
compile fileTree(dir: frameworkDeps, includes: ['*.jar'])
}
}