Gradle buildscript พึ่งพา


176

อะไรคือความแตกต่างระหว่างการประกาศคลังเก็บใน buildScriptส่วนของการสร้าง gradle หรือในระดับรากของการสร้างคืออะไร

ตัวเลือกที่ 1:

build.gradle :

buildScript {
    repositories {
        mavenCentral();
    }
}

หรือ

build.gradle :

repositories {
    mavenCentral();
}

คำตอบ:


165

ที่เก็บในบล็อก buildScript ถูกใช้เพื่อดึงข้อมูลการขึ้นต่อกันของการพึ่งพา buildScript ของคุณ เหล่านี้คือการขึ้นต่อกันที่วางอยู่บน classpath ของบิลด์ของคุณและคุณสามารถอ้างถึงจากไฟล์บิลด์ของคุณ ตัวอย่างเช่นปลั๊กอินเสริมที่มีอยู่บนอินเทอร์เน็ต

ที่เก็บบนระดับรูทถูกใช้เพื่อดึงการอ้างอิงที่โปรเจ็กต์ของคุณขึ้นอยู่กับ ดังนั้นการพึ่งพาทั้งหมดที่คุณต้องรวบรวมโครงการของคุณ


19
ถ้าฉันต้องการ maven ศูนย์กลางสำหรับทั้ง buildscript และโครงการของฉันฉันต้องประกาศสองครั้งหรือไม่?
Marcin Koziński

18
ใช่คุณต้องระบุสองครั้งแน่นอน
สวัสดี Nomus

จากตัวอย่างนี้ปลั๊กอิน Spring propdeps สามารถเพิ่มลงใน buildscript เพื่อเปิดใช้งานคำหลัก "ที่ระบุ" และ "ทางเลือก" สำหรับการอ้างอิงนอกเหนือจากคำหลัก "คอมไพล์" และ "testCompile" ตามปกติ หมายเหตุ: ปลั๊กอินสงครามมีคำหลัก "ที่ให้ไว้" แล้วคุณเพียงแค่ต้องการ propdeps สำหรับโครงการ 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จะพบจาก Repos buildscript ปลั๊กอินเหล่านั้นจะไม่ถูกอ้างอิงเป็นการอ้างอิงสำหรับรหัสแอปพลิเคชัน

แต่สำหรับการคอมไพล์โปรเจ็กต์และทดสอบไฟล์ jar ที่กำลังรันgroovy all jar, junit and testng jarจะพบได้จากที่เก็บระดับรูท

และสิ่งอื่น ,maven { url("https://plugins.gradle.org/m2/") }ส่วนหนึ่งสามารถใช้ได้ทั้งสองช่วงตึก เพราะพวกเขาจะใช้สำหรับการอ้างอิงที่แตกต่างกัน

การเชื่อมโยงทรัพยากร: ความแตกต่างระหว่างการพึ่งพาภายในการปิด buildscript และหลัก


12

สคริปต์การสร้าง (เช่น build.gradle) อาจมีการอ้างอิงบางอย่างสำหรับการดำเนินการของสคริปต์การสร้างเอง คุณจะใส่การอ้างอิงเหล่านั้นไว้ในบล็อก buildScript บทที่ 4 ของ Gradle Beyond the Basicsอธิบายรายละเอียด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.