Gradle 如何删除依赖项和存储库的重复定义?

Gradle 如何删除依赖项和存储库的重复定义?,gradle,Gradle,我有一个构建脚本,其中包含重复的存储库和依赖项: apply plugin: 'groovy' buildscript { repositories { mavenCentral() } dependencies { classpath 'org.codehaus.groovy:groovy-all:2.0.5' classpath 'org.apache.knox:gateway-shell:0.6.0'

我有一个构建脚本,其中包含重复的存储库和依赖项:

apply plugin: 'groovy'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.codehaus.groovy:groovy-all:2.0.5'
        classpath 'org.apache.knox:gateway-shell:0.6.0'
        classpath 'commons-io:commons-io:2.4'
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.0.5'
    compile 'org.apache.knox:gateway-shell:0.6.0'
    compile 'commons-io:commons-io:2.4'
}
如果我注释掉其中任何一个部分,就会收到生成错误。有没有一种方法可以使用存储库和依赖项的单一定义

注意:构建脚本的其余部分

task wrapper(type: Wrapper) {
    gradleVersion = '2.9'
}

sourceSets {
    main {
        groovy {
            srcDirs = ['scripts']
        }
    }
}

/* Task to run script */
tasks.addRule("Pattern: filename.groovy") { String taskName ->

    if (taskName.endsWith('.groovy')) {
        FileTree tree = fileTree('./scripts/').include('**/*.groovy')
        tree.each {File file ->
            if (file.absolutePath.endsWith(taskName)) {

                task(taskName, dependsOn:'classes', type: JavaExec) {

                    Properties props = new Properties()
                    props.load(new FileInputStream("$projectDir/connection.properties"))

                    environment 'gateway', props.gateway
                    environment 'username', props.username
                    environment 'password', props.password

                    // the classname is the scriptname minus the extension
                    main = org.apache.commons.io.FilenameUtils.getBaseName(taskName)
                    classpath = sourceSets.main.runtimeClasspath
                }
            }
        }
    }
}

如果您有一个多模块项目,您可以将其添加到根gradle构建脚本中

allprojects {
    repositories {
        jcenter() or mavenCentral()
    }
}

OP的问题是关于同一build.gradle文件的两个存储库和两个依赖项部分,而不是关于多个模块。现在有办法消除这种重复。不,这两个部分用于不同的事情,buildscript部分用于build.gradle文件的其余部分,而外部部分用于源代码。请看这里: