避免在多模块 Gradle 项目中重复存储库声明
Avoiding Duplicate Repository Declaration in Multi Module Gradle Project
假设我在多模块 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
}
}
项目 B build.gradle:
dependencies {
compile project(":projectA")
compile (group: 'org.anotherdependency', name: 'anotherdependency', version: '1.0')
}
repositories {
maven {
url "http://download.anotherdependency.org
}
}
使用此配置,项目 B 将无法在无法找到非常重要的依赖项中构建声明。
到目前为止,我发现成功完成构建的唯一 "solution" 需要为项目 B 编写 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 所需的所有存储库?
在根中使用build.gradle:
allprojects {
repositories {
maven { url 'http://download.anotherdependency.org' }
maven { url 'http://download.example.org' }
}
}
此代码会将存储库应用于所有项目
假设我在多模块 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
}
}
项目 B build.gradle:
dependencies {
compile project(":projectA")
compile (group: 'org.anotherdependency', name: 'anotherdependency', version: '1.0')
}
repositories {
maven {
url "http://download.anotherdependency.org
}
}
使用此配置,项目 B 将无法在无法找到非常重要的依赖项中构建声明。
到目前为止,我发现成功完成构建的唯一 "solution" 需要为项目 B 编写 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 所需的所有存储库?
在根中使用build.gradle:
allprojects {
repositories {
maven { url 'http://download.anotherdependency.org' }
maven { url 'http://download.example.org' }
}
}
此代码会将存储库应用于所有项目