在多模块Gradle项目中避免重复的存储库声明

在多模块Gradle项目中避免重复的存储库声明,gradle,build.gradle,multi-module,Gradle,Build.gradle,Multi Module,假设我在多模块gradle(4.2)存储库中有两个项目,配置如下: 项目A build.gradle: dependencies { compile (group: 'org.example', name: 'dependency-of-vast-importance', version: '17.2') { } repositories { maven { url "http://download.example.org } } dependenc

假设我在多模块gradle(4.2)存储库中有两个项目,配置如下:

项目A build.gradle:

dependencies {
    compile (group: 'org.example', name: 'dependency-of-vast-importance', version: '17.2') {

}

repositories {
    maven {
        url "http://download.example.org
    }
}
dependencies {
  compile project(":projectA")
  compile (group: 'org.anotherdependency', name: 'anotherdependency', version: '1.0')
}
repositories {
    maven {
        url "http://download.anotherdependency.org
    }
}
allprojects {
    repositories {
        maven { url 'http://download.anotherdependency.org' }
        maven { url 'http://download.example.org' }
    }
}
项目B build.gradle:

dependencies {
    compile (group: 'org.example', name: 'dependency-of-vast-importance', version: '17.2') {

}

repositories {
    maven {
        url "http://download.example.org
    }
}
dependencies {
  compile project(":projectA")
  compile (group: 'org.anotherdependency', name: 'anotherdependency', version: '1.0')
}
repositories {
    maven {
        url "http://download.anotherdependency.org
    }
}
allprojects {
    repositories {
        maven { url 'http://download.anotherdependency.org' }
        maven { url 'http://download.example.org' }
    }
}
有了这种配置,项目B将无法构建—在中无法找到非常重要的依赖关系

到目前为止,我找到的成功完成构建的唯一“解决方案”要求为projectB编写build.gradle,如:

dependencies {
  compile project(":projectA")
  compile (group: 'org.anotherdependency', name: 'anotherdependency', version: '1.0')
}
repositories {
    maven {
        url "http://download.anotherdependency.org
    }
    maven {
        url "http://download.example.org
    }
}
这种方法毫无价值,因为它要求我将ProjectA的存储库声明复制到依赖它的所有其他项目中——这违背了依赖关系管理和模块的目的


如何避免在项目B的build.gradle中指定项目A所需的所有存储库

在root build.gradle中使用:

dependencies {
    compile (group: 'org.example', name: 'dependency-of-vast-importance', version: '17.2') {

}

repositories {
    maven {
        url "http://download.example.org
    }
}
dependencies {
  compile project(":projectA")
  compile (group: 'org.anotherdependency', name: 'anotherdependency', version: '1.0')
}
repositories {
    maven {
        url "http://download.anotherdependency.org
    }
}
allprojects {
    repositories {
        maven { url 'http://download.anotherdependency.org' }
        maven { url 'http://download.example.org' }
    }
}

这段代码将把存储库应用到所有项目中

你必须这样做。这就是我最终要做的——希望gradle能够从特定的存储库中派生依赖项。