Khi nào sử dụng gradle.properties so với settings.gradle?


90

Một bản dựng gradle có ba tệp

  • build.gradle xác định các tập lệnh cấu hình xây dựng
  • gradle.properties
  • settings.gradle

Câu hỏi

  • Sự khác biệt giữa settings.gradle& gradle.properties?
  • Khi nào một cài đặt nên được đưa vào settings.gradleso với gradle.properties?

Câu trả lời:


85

settings.gradle

Các settings.gradletập tin là một kịch bản Groovy, giống như các build.gradletập tin. Chỉ một settings.gradletập lệnh sẽ được thực thi trong mỗi bản dựng (so với nhiều build.gradletập lệnh trong bản dựng nhiều dự án). Tập settings.gradlelệnh sẽ được thực thi trước bất kỳ build.gradletập lệnh nào và thậm chí trước khi các Projectthể hiện được tạo. Do đó, nó được đánh giá dựa trên một Settingsđối tượng. Với Settingsđối tượng này, bạn có thể thêm các dự án con vào bản dựng của mình, sửa đổi các tham số từ dòng lệnh ( StartParameter) và truy cập Gradleđối tượng để đăng ký các trình xử lý vòng đời. Do đó, hãy sử dụng settings.gradlenếu cài đặt của bạn liên quan đến xây dựng và không nhất thiết phải liên quan đến dự án hoặc yêu cầu logic trước khi các dự án con có thể được đưa vào.

gradle.properties

Các gradle.propertiestập tin là một Java đơn giản Propertiestập tin đó chỉ có được một vai trò đặc biệt bởi được tự động đưa vào phạm vi của Projectđối tượng (như cái gọi là 'tài sản dự án'). Đó là một kho lưu trữ khóa-giá trị đơn giản chỉ cho phép các giá trị chuỗi (vì vậy bạn cần tự tách danh sách hoặc mảng). Bạn có thể đặt gradle.propertiestệp vào các vị trí sau:

  • trực tiếp trong thư mục dự án (cho các giá trị liên quan đến dự án)
  • trong thư mục chính của người dùng .gradle(dành cho các giá trị liên quan đến người dùng hoặc môi trường)

62

Một dự án nhiều mô-đun có một mô-đun chính và nhiều mô-đun con. Nó có bố cục sau:

(root)
  +- settings.gradle       
  +- build.gradle          # optional (commonly present)
  +- gradle.properties     # optional
  +-- buildSrc/            # optional
  |     +- build.gradle    
  |     +-- src/...
  +-- my-gradle-stuff/     # optional
  |     +- utils.gradle    # optional
  +-- sub-a/
  |     +- build.gradle
  |     +- src/
  +-- sub-b/
        +- build.gradle
        +- src/

mô-đun con cũng có thể được đặt sâu hơn trong các thư mục con, nhưng không cần sửa đổi mã trong settings.gradle, tên của chúng sẽ bao gồm tên của các thư mục đó.

settings.gradle

Vai trò chính của settings.gradle là xác định tất cả các mô-đun con được bao gồm và đánh dấu thư mục gốc của cây mô-đun, vì vậy bạn chỉ có thể có một settings.gradletệp trong một dự án nhiều mô-đun.

rootProject.name = 'project-x'

include 'sub-a', 'sub-b'

Tệp cài đặt cũng được viết bằng Groovy và tra cứu mô-đun con có thể được tùy chỉnh.

build.gradle

Có một tệp như vậy cho mỗi mô-đun, nó chứa logic xây dựng cho mô-đun này.

Trong build.gradletệp của mô-đun chính , bạn có thể sử dụng allprojects {}hoặc subprojects {}để xác định cài đặt cho tất cả các mô-đun khác.

Trong build.gradletệp của các mô-đun con, bạn có thể sử dụng compile project(':sub-a')để làm cho một mô-đun con phụ thuộc vào mô-đun con kia.

gradle.properties

Đây là tùy chọn, mục đích chính của nó là cung cấp các tùy chọn khởi động để sử dụng cho việc chạy chính gradle, ví dụ:

org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true

Các giá trị này có thể được ghi đè bởi một tệp USER_HOME/.gradle/gradle.propertiesvà bị ghi đè bởi các đối số dòng lệnh gradle. Ngoài ra, có thể đặt các biến môi trường cho bản dựng trong tệp này bằng cách sử dụng systemProp.tiền tố.

Bất kỳ thuộc tính nào trong tệp này đều có thể được sử dụng trong bất kỳ build.gradle nào, vì vậy một số dự án cũng đưa phiên bản phụ thuộc hoặc thông tin phát hành vào gradle.properties, nhưng đó có thể là sự lạm dụng tệp này.

my-gradle-things / utils.gradle

(Bất kỳ tên thư mục hoặc tệp nào cũng được.) Bạn có thể xác định tệp gradle tùy chỉnh bổ sung để sử dụng lại các định nghĩa và đưa chúng vào các tệp gradle khác thông qua

apply from: "$rootDir/gradle/utils.gradle"

những nơi khác để đặt cái này có thể là src/gradlehoặcsrc/build/gradle

buildSrc / ...

Thư mục này thật đặc biệt, bản thân nó giống như một dự án gradle riêng biệt. Nó được xây dựng trước khi làm bất cứ điều gì khác và có thể cung cấp chức năng để sử dụng trong bất kỳ tệp gradle nào khác. Vì lý do kỹ thuật, hỗ trợ IDE cho các tham chiếu đến thư mục này hoạt động tốt hơn nhiều so với bất kỳ cách nào khác để trích xuất mã chung từ nhiều build.gradletệp vào một vị trí riêng biệt.

Bạn có thể xác định logic xây dựng tùy chỉnh phức tạp trong java, groovy hoặc kotlin, thay vì viết và triển khai một plugin. Điều này cũng hữu ích để kiểm tra đơn vị mã xây dựng tùy chỉnh của bạn, vì bạn có thể kiểm tra đơn vị. Cấu trúc thư mục nguồn trong buildSrccó thể được điều chỉnh giống như cho bất kỳ dự án java / groovy / kotlin nào.

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.