Dependencies 在Gradle中定义依赖集

Dependencies 在Gradle中定义依赖集,dependencies,gradle,dependency-management,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') } include ":sub-project" def addHttpComponents(

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

/build.gradle

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

subprojects {
    apply from: rootProject.file('common-deps.gradle')
}
include ":sub-project"
def addHttpComponents() {
    dependencies {
        compile     group: 'org.apache.httpcomponents', name: 'httpcore',   version: '4.3'
        compile     group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.1'
    }
}
apply maven
apply java

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

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

subprojects {
    apply from: rootProject.file('common-deps.gradle')
}
include ":sub-project"
def addHttpComponents() {
    dependencies {
        compile     group: 'org.apache.httpcomponents', name: 'httpcore',   version: '4.3'
        compile     group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.1'
    }
}
apply maven
apply java

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

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

subprojects {
    apply from: rootProject.file('common-deps.gradle')
}
include ":sub-project"
def addHttpComponents() {
    dependencies {
        compile     group: 'org.apache.httpcomponents', name: 'httpcore',   version: '4.3'
        compile     group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.1'
    }
}
apply maven
apply java

addHttpComponents()
dependencies {
    compile     group: 'org.apache.httpcomponents', name: 'httpcore',   version: '4.3'
    compile     group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.1'
}
 apply from: rootProject.file('common-deps.gradle')
因此,如果我想将HttpComponents添加到我的构建中。我希望能够将我的子项目的构建文件编写为:

/sub-project/build.gradle

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

subprojects {
    apply from: rootProject.file('common-deps.gradle')
}
include ":sub-project"
def addHttpComponents() {
    dependencies {
        compile     group: 'org.apache.httpcomponents', name: 'httpcore',   version: '4.3'
        compile     group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.1'
    }
}
apply maven
apply java

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

当上面的文件无法运行时,是否有方法执行此操作。还是我完全走错了路。

首先,为什么你的方法不起作用:

apply from:
将渐变脚本应用于项目对象。这意味着您可以在脚本中配置项目,但是在该脚本中定义的本地方法在不同的脚本中不可能神奇地可用

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

将普通部门等级更改为

ext.addHttpComponents = {
  dependencies {
    compile     group: 'org.apache.httpcomponents', name: 'httpcore',   version: '4.3'
    compile     group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.1'
 }
}
事情应该会更好


其次,我觉得你的方法有点复杂。为什么不只是:

普通副学士学位

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

subprojects {
    apply from: rootProject.file('common-deps.gradle')
}
include ":sub-project"
def addHttpComponents() {
    dependencies {
        compile     group: 'org.apache.httpcomponents', name: 'httpcore',   version: '4.3'
        compile     group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.1'
    }
}
apply maven
apply java

addHttpComponents()
dependencies {
    compile     group: 'org.apache.httpcomponents', name: 'httpcore',   version: '4.3'
    compile     group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.1'
}
 apply from: rootProject.file('common-deps.gradle')
然后在/sub-project/build.gradle中

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

subprojects {
    apply from: rootProject.file('common-deps.gradle')
}
include ":sub-project"
def addHttpComponents() {
    dependencies {
        compile     group: 'org.apache.httpcomponents', name: 'httpcore',   version: '4.3'
        compile     group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.1'
    }
}
apply maven
apply java

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

最后,我想你是说

apply plugin: 'maven'
apply plugin: 'java'
/sub-project/build.gradle中

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

subprojects {
    apply from: rootProject.file('common-deps.gradle')
}
include ":sub-project"
def addHttpComponents() {
    dependencies {
        compile     group: 'org.apache.httpcomponents', name: 'httpcore',   version: '4.3'
        compile     group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.1'
    }
}
apply maven
apply java

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