1
說我定義了一個插件,像這樣:gradle配置是否合併或覆蓋?
import org.gradle.api.artifacts.dsl.RepositoryHandler
import org.gradle.api.artifacts.repositories.MavenArtifactRepository
import org.gradle.api.Project
import org.gradle.api.Plugin
class MyRepos implements Plugin<Project> {
static final String NEXUS_URL = 'http://nexus.mine.com/nexus/content/repositories/'
static final List<String> NEXUS_REPOS = [
'central',
'build',
'snapshots',
'release-candidates',
'releases',
]
void apply(Project project) {
project.repositories {
NEXUS_REPOS.each {
maven {
url (NEXUS_URL + it)
}
}
mavenLocal()
}
project.buildscript {
repositories {
maven {
url (NEXUS_URL + 'central')
}
mavenLocal()
}
}
}
}
,並在當地的build.gradle,我寫
apply plugin: MyRepos
buildscript {
dependencies {
...
}
}
我的願望是要合併使得倉庫兩個部分buildscript在插件和build.gradle中的依賴關係中定義,但看起來局部聲明會覆蓋插件,並最終出現一個指示「沒有定義存儲庫」的錯誤。
如果我通過頂層build.gradle的配置注入來做到這一點,結果是一樣的嗎?
也許正確的解決方案是爲插件提供的分機關閉定義useMyRepos()類似用於mavenCentral()的方式......
也許依賴被合併,我沒有測試過 - 但似乎'buildscripts'和'repositories'的內容沒有合併。我仍然需要檢查配置注入是否正確。 – 2015-03-31 19:50:26
您可以先用兩個腳本嘗試它(一個使用'apply from'應用另一個腳本)。對於不同的對象類型或合併插件和腳本,Gradle可能有不同的規則。 – 2015-03-31 19:52:59
好的 - 做了一些更多的研究,根據[Gradle中的buildScript的目的](http://stackoverflow.com/questions/13923766/gradle-buildscript-dependencies),因爲'buildscript'塊是爲了定義構建腳本本身,而'存儲庫'用於定義您構建的項目的依賴關係,在這種情況下,兩個存儲庫節點將不會合並。 – 2015-03-31 22:13:52