Залежності Gradle-сценарію від Gradle


176

Яка різниця між декларуванням сховищ в buildScriptрозділі збірки gradle або в кореневому рівні збірки.

Варіант 1:

build.gradle :

buildScript {
    repositories {
        mavenCentral();
    }
}

або

build.gradle :

repositories {
    mavenCentral();
}

Відповіді:


165

Репозиторії в блоці buildScript використовуються для встановлення залежностей ваших buildScript-залежностей. Це залежності, які ставляться на класний шлях вашої збірки, і на який ви можете посилатися з файлу збирання. Наприклад, додаткові плагіни, які існують в Інтернеті.

Репозиторії на рівні кореня використовуються для пошуку залежностей, від яких залежить ваш проект. Отже, всі залежності, необхідні для складання вашого проекту.


19
Якщо мені потрібен Maven central як для мого buildscript, так і для мого проекту, чи потрібно мені заявляти про це двічі?
Marcin Koziński

18
Так, вам потрібно вказати це два рази, тож дійсно.
Hiery Nomus

Як приклад цього плагін Spring propdeps може бути доданий до сценарію builds, щоб включити ключові слова "надані" та "необов'язкові" для залежностей, крім звичайних ключових слів "компілювати" та "testCompile". Примітка. В плагіні війни вже є ключове слово "надане", вам просто потрібні підручні файли для jar-проектів, які будуть розгорнуті всередині війни.
Powerlord

14

Я хочу дати вам чітке уявлення. З цієї причини я додаю код знімка build.grade для кращого розуміння.

Залежності buildscript:

buildscript {
    repositories {
        maven { url("https://plugins.gradle.org/m2/") }
    }

    dependencies {
        classpath 'net.saliman:gradle-cobertura-plugin:2.3.2'
        classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
    }
}

кореневий рівень / основні залежності:

repositories{
    mavenLocal()
    maven { url("https://plugins.gradle.org/m2/") }
    maven { url "https://repo.spring.io/snapshot" }
}

dependencies {
        //Groovy
        compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.3.10'

        //Spock Test
        compile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.3'

        //Test
        testCompile group: 'junit', name: 'junit', version: '4.10'
        testCompile group: 'org.testng', name: 'testng', version: '6.8.5'
}

Отже, спершу я хочу одним словом уточнити це

i) файл jar-файлу залежностей від buildscript буде завантажений із сховищ buildscript. [Зовнішня залежність проекту]

ii) файл jar-файлу залежності кореневого рівня буде завантажений із сховищ кореневого рівня. [Для залежності від проекту]

Ось

Блок "buildscript" контролює лише залежності для самого процесу buildscript, а не для коду програми. Як різні Gradle плагін , як gradle-cobertura-plugin, gradle-lint-pluginзнайдені з buildscript РЕПО. На ці плагіни не посилаються б на залежності коду програми.

Але для компіляції проекту та тестування запущених файлів jar подібні groovy all jar, junit and testng jarбудуть знайдені з репозиторіїв кореневого рівня.

І інша річ , maven { url("https://plugins.gradle.org/m2/") }порцію можна використовувати в обох блоках. Тому що їх використовують для різних залежностей.

Посилання на ресурс: різниця між залежностями в рамках закриття сценарію і основним


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.