Tôi muốn cung cấp cho bạn quan niệm rõ ràng. Vì lý do này, tôi đính kèm mã số ảnh chụp build.grade để hiểu rõ hơn.
buildscript phụ thuộc:
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'
}
}
gốc tốt nghiệp/Thực lõi phụ thuộc:
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, đầu tiên tôi muốn làm rõ trong từ duy nhất mà
i) tệp jar phụ thuộc buildscript sẽ là được tải xuống từ kho tích hợp. [Phụ thuộc bên ngoài của dự án]
ii) tệp jar phụ thuộc cấp gốc sẽ được tải xuống từ gốc kho cấp gốc. [Đối với phụ thuộc dự án]
Ở đây,
Các “buildscript” khối chỉ kiểm soát phụ thuộc cho quá trình buildscript chính nó, không cho mã ứng dụng. Vì các plugin gradle khác nhau như gradle-cobertura-plugin
, gradle-lint-plugin
được tìm thấy từ bản dựng repos. Các plugin này sẽ không được tham chiếu dưới dạng phụ thuộc cho mã ứng dụng.
Nhưng để biên soạn dự án và chạy thử các tệp jar như groovy all jar, junit and testng jar
sẽ được tìm thấy từ các kho cấp gốc.
Và một điều khác, 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.
Resource Link:Difference between dependencies within buildscript closure and core
Nếu tôi cần maven trung tâm cho cả buildscript tôi và dự án của tôi, tôi có cần phải khai báo nó hai lần? –
Có, bạn cần phải xác định nó hai lần sau đó thực sự. –
Ví dụ về điều này, plugin Spring propdeps có thể được thêm vào bản dựng để bật các từ khóa "được cung cấp" và "tùy chọn" cho các phụ thuộc ngoài từ khóa "biên dịch" và "testCompile" thông thường. Lưu ý: Plugin chiến dịch đã cung cấp từ khóa "được cung cấp", bạn chỉ cần propdep cho các dự án jar sẽ được triển khai bên trong một cuộc chiến. – Powerlord