【问题标题】:Gradle Multi Project Dependencies with Multiple Lib folders具有多个 Lib 文件夹的 Gradle 多项目依赖项
【发布时间】: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-coreabc-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


【解决方案1】:

您可以使用任何项目的内置 projectDir 属性来构建相对于您的一个项目的绝对路径,假设您的所有项目都参与同一个多项目构建。

因此,如果您在顶级 abc 目录中有一个 build.gradle 文件,它可能看起来像这样(根据您上面的评论):

//"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'])
    }
}

【讨论】:

    猜你喜欢
    • 2018-11-10
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 2016-07-28
    • 2014-09-13
    • 1970-01-01
    相关资源
    最近更新 更多