2012-12-14 52 views
8

Trong gradle, mục đích của việc sử dụng tệp buildSrc là cấp cao nhất, thay vì chỉ là một bố cục java điển hình (src/main/java)?Mục đích của thư mục buildSrc của gradle là gì?

Nếu tôi có một bố trí của

src 
    main 
     java 

hoặc

buildSrc 
    src 
     main 
      java 

Điều gì sẽ là sự khác biệt (hoặc lý do để làm điều này)? Nó có hữu ích hơn trong các dự án đa mô-đun không? Ngay cả đối với một dự án đa mô-đun, không thể tôi làm một cái gì đó giống như

proj1 
    src 


proj2 
    src 

Và sau đó chỉ cần có một build.gradle cấp cao nhất (ở mức độ tương tự như proj1proj2) định nghĩa các thiết lập phổ biến trên các dự án?

Trả lời

22

buildSrc là một riêng biệt build mà mục đích là xây dựng bất kỳ nhiệm vụ, plugin, hoặc các lớp khác được dự định sẽ được sử dụng trong xây dựng kịch bản của việc xây dựng chính, nhưng không cần phải được chia sẻ qua xây dựng (*) Sẽ không thể xây dựng các lớp như là một phần của bản xây dựng chính, bởi vì chúng phải tồn tại trước khi các kịch bản xây dựng của xây dựng chính thậm chí có thể được biên dịch/đánh giá, và Gradle biên dịch/đánh giá tất cả các kịch bản xây dựng trước khi nó bất kỳ công việc nào (cấu hình và pha thực thi).

So với việc đặt tất cả mã xây dựng vào tập lệnh xây dựng, buildSrc cung cấp cho bạn cách phát triển mã xây dựng giống mã thông thường hơn, như các lớp bạn có thể kiểm tra, nhập vào IDE của bạn. đơn giản và DRY ngay cả đối với các bản dựng phức tạp hơn.

buildSrc thường được thấy trong các bản dựng nhiều dự án đơn giản vì các bản dựng lớn hơn có nhiều khả năng triển khai các công việc và plugin tùy chỉnh của riêng họ.

Theo thời gian, buildSrc sẽ phát triển thành khả năng tổng quát hơn khi thực hiện nhiều phụ thuộc xây dựng trong một lần gọi Gradle đơn lẻ.

(*) Chia sẻ các lớp học trên các bản dựng là có thể nhưng có liên quan nhiều hơn. Cụ thể, bạn sẽ cần phải xuất bản các lớp vào một kho lưu trữ, và các bản xây dựng tiêu thụ phải nhập một cách rõ ràng chúng từ đó, tương tự như khi chia sẻ các thư viện sản xuất giữa các bản dựng.

+0

Cảm ơn bạn đã giải thích chi tiết! –

Các vấn đề liên quan