Say я определяю плагин, например, так:Устраивать или переопределять конфигурации градиента?
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, но, похоже, что локальное объявление переопределяет плагин, и я получаю сообщение об ошибке «no repositories defined».
Если я делаю это с помощью инсталляции конфигурации из верхнего уровня build.gradle, то результат такой же?
Может быть правильным решением для плагина чтобы обеспечить закрытие внутр для определения useMyRepos() аналогично тому, как mavenCentral() используется ...
Возможно, зависимости объединены, я не тестировал это, но, похоже, содержимое 'buildscripts' и' repositories' не объединено. Мне все еще нужно проверить, верно ли это для инсталляции конфигурации. –
Вы можете сначала попробовать два сценария (один применит другой, используя 'apply from'). У Gradle могут быть разные правила для разных типов объектов или для слияния плагинов и скриптов. –
Ok - сделал еще несколько исследований и в соответствии с [Назначение buildScript в Gradle] (http://stackoverflow.com/questions/13923766/gradle-buildscript-dependencies), поскольку блок «buildscript» предназначен для определения зависимостей для сам сценарий сборки, в то время как «репозитории» предназначены для определения зависимостей проекта, который вы создаете, тогда в этом случае два узла репозитория не будут объединены. –