在多模块Gradle项目中避免重复的存储库声明
假设我在多模块gradle(4.2)存储库中有两个项目,配置如下: 项目A build.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
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能够从特定的存储库中派生依赖项。