dependencies - 在Gradle中定义依赖集

标签 dependencies gradle dependency-management

基本上,我想做的是定义一组依赖项,然后仅在各个构建脚本中调用一个函数或类似的东西来添加它们。基本上是这样的:

/build.gradle

apply plugin: 'base' // To add "clean" task to the root project.

subprojects {
    apply from: rootProject.file('common-deps.gradle')
}

/settings.gradle
include ":sub-project"

/common-deps.gradle
def addHttpComponents() {
    dependencies {
        compile     group: 'org.apache.httpcomponents', name: 'httpcore',   version: '4.3'
        compile     group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.1'
    }
}

因此,如果我想将HttpComponents添加到我的构建中。我希望能够将子项目的构建文件编写为:

/sub-project/build.gradle
apply maven
apply java

addHttpComponents()

由于上面的文件无法运行,有没有办法做到这一点。还是我完全以错误的方式来解决这个问题。

最佳答案

首先,为什么您的方法行不通:
apply from:将gradle脚本应用于项目对象。这意味着您可以在脚本中配置项目,但是在该脚本中定义的本地方法将无法在其他脚本中使用。

您可以做的是将方法设置为项目对象的扩展属性。然后,您的方法将通过项目对象可用于其他脚本。

/common-deps.gradle 更改为

ext.addHttpComponents = {
  dependencies {
    compile     group: 'org.apache.httpcomponents', name: 'httpcore',   version: '4.3'
    compile     group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.1'
 }
}

事情应该会更好。

接下来,无论如何,您的方法对我来说似乎有点令人费解。为什么不只是:

common-deps.gradle
dependencies {
    compile     group: 'org.apache.httpcomponents', name: 'httpcore',   version: '4.3'
    compile     group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.1'
}

然后在 /sub-project/build.gradle
 apply from: rootProject.file('common-deps.gradle')

最后,我认为你的意思是
apply plugin: 'maven'
apply plugin: 'java'

/sub-project/build.gradle

关于dependencies - 在Gradle中定义依赖集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21199990/

相关文章:

android - 更改 android studio 的 https 代理设置

c++ - 链接器如何选择要包含以构建的 .lib 文件?

c++ - Visual Studio 静态链接(freeglut,glew)

dependencies - 如何安装 Debian 软件包的 Build-Depends 和 Depends

java - 使用 Maven 插件 Web.xml 未包含在 War 中

java - 将另一个 java 源目录添加到 gradle 脚本

java - 使用 Gradle 在 Eclipse 中自动下载库

android - 生成的 Google Endpoint 库中的版本字符串来自哪里?

maven - Gradle 子项目依赖管理,就像在 Maven 中一样

julia - Julia 中的子模块内部依赖