Lớp phụ thuộc bản dựng


176

Sự khác biệt giữa khai báo kho lưu trữ trong buildScriptphần xây dựng lớp hoặc ở cấp độ gốc của bản dựng.

Lựa chọn 1:

bản dựng .

buildScript {
    repositories {
        mavenCentral();
    }
}

hoặc là

bản dựng .

repositories {
    mavenCentral();
}

Câu trả lời:


165

Các kho lưu trữ trong khối buildScript được sử dụng để tìm nạp các phụ thuộc của các phụ thuộc buildScript của bạn. Đây là các phụ thuộc được đặt trên đường dẫn lớp của bản dựng của bạn và bạn có thể tham khảo từ tệp bản dựng của mình. Ví dụ, các plugin bổ sung tồn tại trên internet.

Các kho lưu trữ ở cấp độ gốc được sử dụng để tìm nạp các phụ thuộc mà dự án của bạn phụ thuộc vào. Vì vậy, tất cả các phụ thuộc bạn cần để biên dịch dự án của bạn.


19
Nếu tôi cần maven trung tâm cho cả bản dựng và dự án của tôi, tôi có cần khai báo hai lần không?
Marcin Koziński

18
Vâng, bạn cần phải xác định nó hai lần sau đó thực sự.
Hiery Nomus

Ví dụ về điều này, plugin Spring propdeps có thể được thêm vào bản dựng để kích hoạt các từ khóa "được cung cấp" và "tùy chọn" cho các phụ thuộc bên cạnh các từ khóa "biên dịch" và "testCompile" thông thường. Lưu ý: Plugin chiến tranh đã cung cấp từ khóa "được cung cấp", bạn chỉ cần propdeps cho các dự án jar sẽ được triển khai trong một cuộc chiến.
Powerlord

14

Tôi muốn cho bạn quan niệm rõ ràng. Vì lý do này, tôi gắn build.grade đang chụp để hiểu rõ hơn.

phụ thuộc bản dựng:

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'
    }
}

mức gốc / phụ thuộc cốt lõi:

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'
}

Vì vậy, trước tiên tôi muốn làm rõ bằng một từ duy nhất

i) tệp jar phụ thuộc bản dựng sẽ được tải xuống từ kho lưu trữ bản dựng. [Dự án phụ thuộc bên ngoài]

ii) tệp jar phụ thuộc cấp gốc sẽ được tải xuống từ kho lưu trữ cấp gốc. [Đối với phụ thuộc dự án]

Đây,

Khối bản dựng xây dựng trên nền tảng của Wap chỉ kiểm soát các phụ thuộc cho chính quá trình xây dựng, chứ không phải cho mã ứng dụng. Như các plugin gradle khác nhau như gradle-cobertura-plugin, gradle-lint-pluginđược tìm thấy từ repos bản dựng. Các plugin đó sẽ không được tham chiếu dưới dạng phụ thuộc cho mã ứng dụng.

Nhưng để biên dịch dự án và kiểm tra các tệp jar chạy như thế groovy all jar, junit and testng jarsẽ được tìm thấy từ kho lưu trữ cấp gốc.

Và một điều nữa , maven { url("https://plugins.gradle.org/m2/") }phần có thể được sử dụng trong cả hai khối. Bởi vì chúng được sử dụng cho các phụ thuộc khác nhau.

Liên kết tài nguyên: Sự khác biệt giữa các phụ thuộc trong đóng bản dựng và cốt lõi


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.