ควรใช้ gradle.properties เทียบกับ settings.gradle เมื่อใด


94

gradle build มีสามไฟล์

  • build.gradle ที่กำหนดสคริปต์คอนฟิกูเรชันบิลด์
  • gradle.properties
  • settings.gradle

คำถาม

  • อะไรคือความแตกต่างระหว่างsettings.gradle& gradle.properties?
  • ควรใส่การตั้งค่าsettings.gradleเมื่อgradle.propertiesใดเทียบกับ ?

คำตอบ:


87

settings.gradle

settings.gradleไฟล์เป็นสคริปต์ Groovy เช่นเดียวกับbuild.gradleไฟล์ settings.gradleจะมีการเรียกใช้สคริปต์เพียงหนึ่งสคริปต์ในแต่ละบิลด์ (เปรียบเทียบกับbuild.gradleสคริปต์หลาย ๆสคริปต์ในบิลด์หลายโปรเจ็กต์) settings.gradleสคริปต์จะดำเนินการใด ๆ ก่อนที่build.gradleสคริปต์และแม้กระทั่งก่อนที่Projectอินสแตนซ์ที่ถูกสร้างขึ้น ดังนั้นจึงมีการประเมินกับSettingsวัตถุ ด้วยSettingsอ็อบเจ็กต์นี้คุณสามารถเพิ่มโปรเจ็กต์ย่อยในบิลด์ของคุณแก้ไขพารามิเตอร์จากบรรทัดคำสั่ง ( StartParameter) และเข้าถึงGradleอ็อบเจ็กต์เพื่อลงทะเบียนตัวจัดการวงจรชีวิต ดังนั้นให้ใช้settings.gradleหากการตั้งค่าของคุณเกี่ยวข้องกับการสร้างและไม่จำเป็นต้องเกี่ยวข้องกับโครงการหรือต้องใช้ตรรกะก่อนที่จะรวมโครงการย่อยที่เป็นไปได้

gradle.properties

gradle.propertiesไฟล์ Java ง่ายPropertiesไฟล์เท่านั้นที่ได้รับบทบาทเป็นพิเศษโดยถูกรวมโดยอัตโนมัติในขอบเขตของProjectวัตถุ (เป็นสิ่งที่เรียกว่า 'คุณสมบัติของโครงการ) เป็นที่เก็บคีย์ - ค่าอย่างง่ายที่อนุญาตเฉพาะค่าสตริง (ดังนั้นคุณต้องแยกรายการหรืออาร์เรย์ด้วยตัวเอง) คุณสามารถใส่gradle.propertiesไฟล์ไปยังตำแหน่งเหล่านี้:

  • โดยตรงในไดเรกทอรีโครงการ (สำหรับค่าที่เกี่ยวข้องกับโครงการ)
  • ในโฮม.gradleไดเร็กทอรีของผู้ใช้(สำหรับค่าที่เกี่ยวข้องกับผู้ใช้หรือสภาพแวดล้อม)

65

โครงการหลายโมดูลมีโมดูลหลักหนึ่งโมดูลและโมดูลย่อยจำนวนมาก มีเค้าโครงนี้:

(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/

โมดูลย่อยยังสามารถอยู่ลึกลงไปในโฟลเดอร์ย่อยได้ แต่หากไม่มีการแก้ไขโค้ดใน settings.gradle ชื่อของมันจะรวมชื่อของโฟลเดอร์ดังกล่าวไว้ด้วย

settings.gradle

บทบาทหลักของ settings.gradle คือการกำหนดโมดูลย่อยที่รวมอยู่ทั้งหมดและเพื่อทำเครื่องหมายไดเร็กทอรีรูทของทรีของโมดูลดังนั้นคุณสามารถมีsettings.gradleไฟล์เดียวในโปรเจ็กต์แบบหลายโมดูล

rootProject.name = 'project-x'

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

ไฟล์การตั้งค่ายังเขียนด้วย groovy และสามารถปรับแต่งการค้นหาโมดูลย่อยได้

build.gradle

มีไฟล์ดังกล่าวหนึ่งไฟล์ต่อโมดูลซึ่งมีตรรกะการสร้างสำหรับโมดูลนี้

ในbuild.gradleไฟล์ของโมดูลหลักคุณสามารถใช้allprojects {}หรือsubprojects {}กำหนดการตั้งค่าสำหรับโมดูลอื่น ๆ ทั้งหมดได้

ในbuild.gradleไฟล์ของโมดูลย่อยคุณสามารถใช้compile project(':sub-a')เพื่อทำให้โมดูลย่อยหนึ่งขึ้นอยู่กับอีกโมดูลหนึ่ง

gradle.properties

นี่เป็นทางเลือกจุดประสงค์หลักคือเพื่อให้ตัวเลือกการเริ่มต้นใช้งานสำหรับการเรียกใช้ gradle เองเช่น

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

ค่าเหล่านี้สามารถถูกแทนที่โดยไฟล์USER_HOME/.gradle/gradle.propertiesและลบล้างโดยอาร์กิวเมนต์บรรทัดคำสั่ง gradle นอกจากนี้ยังสามารถตั้งค่าตัวแปรสภาพแวดล้อมสำหรับบิลด์ในไฟล์นี้โดยใช้systemProp.เป็นคำนำหน้า

คุณสมบัติใด ๆ ในไฟล์นี้สามารถใช้ใน build.gradle ใด ๆ ได้ดังนั้นบางโปรเจ็กต์จึงใส่เวอร์ชันอ้างอิงหรือข้อมูลรีลีสไว้gradle.propertiesด้วย แต่อาจเป็นการใช้ไฟล์นี้ในทางที่ผิด

my-gradle-stuff / utils.gradle

(สามารถตั้งชื่อโฟลเดอร์หรือไฟล์ใด ๆ ก็ได้) คุณสามารถกำหนดไฟล์ gradle แบบกำหนดเองเพิ่มเติมเพื่อใช้นิยามซ้ำและรวมไว้ในไฟล์ gradle อื่น ๆ ผ่านทาง

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

สถานที่อื่น ๆ ที่จะใส่สิ่งนี้อาจเป็นsrc/gradleหรือsrc/build/gradle

buildSrc / ...

โฟลเดอร์นี้มีความพิเศษเป็นเหมือนโครงการ gradle ที่แยกจากกันในตัวเอง สร้างขึ้นก่อนทำสิ่งอื่นใดและสามารถจัดเตรียมฟังก์ชันเพื่อใช้ในไฟล์ gradle อื่น ๆ ด้วยเหตุผลทางเทคนิคการสนับสนุน IDE สำหรับการอ้างอิงไปยังโฟลเดอร์นี้จึงทำงานได้ดีกว่าวิธีอื่น ๆ ในการแยกโค้ดทั่วไปจากหลาย ๆbuild.gradleไฟล์ไปยังตำแหน่งแยก

คุณสามารถกำหนดตรรกะการสร้างแบบกำหนดเองที่ซับซ้อนใน java, groovy หรือ kotlin แทนการเขียนและปรับใช้ปลั๊กอิน นอกจากนี้ยังมีประโยชน์สำหรับการทดสอบหน่วยโค้ดบิวด์ที่กำหนดเองของคุณเนื่องจากคุณสามารถทดสอบหน่วยได้ โครงสร้างโฟลเดอร์ซอร์สbuildSrcสามารถปรับเปลี่ยนได้เช่นเดียวกับโปรเจ็กต์ java / groovy / kotlin

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.