Sự khác biệt giữa buildscript và allprojects trong build.gradle là gì?


135

Trên bản dựng lớp đa dự án, ai đó có thể cho tôi biết chính xác sự khác biệt giữa phần "allprojects" và "bản dựng" là gì không? Cả hai đều có một repositoriesdependenciesnhiệm vụ. Là allprojectscho dự án của tôi? Thế còn buildscript?

buildscript {  
     repositories {
         ...
     }
     dependencies {
         ...
     }
}

allprojects(subprojects) { 
     repositories {
         ...
     }
     dependencies {
         ...
     }
}

Câu trả lời:


137

Phần buildscriptcấu hình "" dành cho chính lớp (tức là thay đổi cách thức lớp có thể thực hiện việc xây dựng). Vì vậy, phần này thường sẽ bao gồm plugin Android Gradle.

Phần " allprojects" dành cho các mô-đun đang được Gradle xây dựng.

Thông thường, phần lưu trữ là giống nhau cho cả hai, vì cả hai sẽ nhận được sự phụ thuộc của họ từ jcenter thường (hoặc có thể là trung tâm maven). Nhưng phần "phụ thuộc" sẽ khác nhau.

Thông thường, phần "phụ thuộc" cho "allprojects" trống vì phần phụ thuộc cho mỗi mô-đun là duy nhất và sẽ nằm trong tệp "build.gradle" trong mỗi mô-đun. Tuy nhiên, nếu tất cả các mô-đun chia sẻ cùng một phụ thuộc thì chúng có thể được liệt kê ở đây.


Chúng ta có phải chỉ định phiên bản gradle?
IgorGanapolsky

user: 6998684 Phiên bản gradle áp dụng cho toàn bộ dự án và được khai báo trong một tệp bị ẩn đi một chút. Hãy xem trong "./gradle/wrapper/gradle-wrapper.properies"
AndroidGuy

22

TL; DR: buildscriptgiúp tìm plugin, allprojectsáp dụng cho tất cả các dự án


https://docs.gradle.org/civerse/userguide/userguide_single.html#applyPluginBuildscript nói

Các plugin nhị phân đã được xuất bản dưới dạng tệp jar bên ngoài có thể được thêm vào dự án bằng cách thêm plugin vào đường dẫn tập lệnh xây dựng và sau đó áp dụng plugin.

Vì vậy, bạn cần buildscriptcho lớp để tìm các plugin, như

Gradle ở cốt lõi của nó cố ý cung cấp rất ít cho tự động hóa thế giới thực. Tất cả các tính năng hữu ích, như khả năng biên dịch mã Java, được bổ sung bởi các plugin. Các trình bổ sung thêm các tác vụ mới (ví dụ: JavaCompile), các đối tượng miền (ví dụ Source set), các quy ước (ví dụ: nguồn Java được đặt tại src / main / java) cũng như mở rộng các đối tượng và đối tượng cốt lõi từ các plugin khác.

Liên quanallprojects :

API dự án cung cấp một thuộc tính allprojectstrả về một danh sách với dự án hiện tại và tất cả các tiểu dự án của nó bên dưới nó. Nếu bạn gọi allprojectsvới một bao đóng, các báo cáo về việc đóng được ủy quyền cho các dự án liên quan đến allprojects.


Đối với tôi, là người mới bắt đầu trong hệ sinh thái Android, điều này có nghĩa là không có gì. Chúng ta cần đặt phụ thuộc vào đâu? Chúng ta có thể xóa "bản dựng" đó không?
Martin Berger

@MartinBerger: đặt các phụ thuộc của bạn vào mô-đun build.gradle, không phải build.gradlelà một thư mục ở trên, câu hỏi này liên quan đến
serv-inc
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.