דרגה: build.gradle לעומת settings.gradle לעומת gradle.properties

1. סקירה כללית

במאמר זה, נבחן את קבצי התצורה השונים של פרויקט Gradle Java. כמו כן, נראה את הפרטים של מבנה בפועל.

אתה יכול לבדוק מאמר זה לקבלת מבוא כללי ל- Gradle.

2. build.gradle

נניח שאנחנו רק יוצרים פרויקט Java חדש על ידי הפעלה דרג התחל - סוג יישום Java. זה ישאיר אותנו עם פרויקט חדש עם הספריה ומבנה הקבצים הבאים:

build.gradle gradle wrapper gradle-wrapper.jar gradle-wrapper.properties gradlew gradlew.bat settings.gradle src main java App.java test java AppTest.java

אנחנו יכולים לשקול את build.gradle להגיש את הלב או המוח של הפרויקט. הקובץ שהתקבל לדוגמא שלנו נראה כך:

תוספים {id 'java' id 'application'} mainClassName = 'תלות באפליקציה' {הידור 'com.google.guava: guava: 23.0' testCompile 'junit: junit: 4.12'} מאגרים {jcenter ()}

הוא מורכב מקוד גרובי, או ליתר דיוק, מ- DSL מבוסס גרובי (שפה ספציפית לתחום) לתיאור המבנים. אנו יכולים להגדיר את התלות שלנו כאן ולהוסיף דברים כמו מאגרי Maven המשמשים לפתרון תלות.

אבני הבניין הבסיסיות של Gradle הן פרויקטים ומשימות. במקרה זה, מאז ג'אווה תוסף מוחל, כל המשימות הדרושות לבניית פרויקט Java מוגדרות באופן מרומז. חלק מהמשימות האלה הן להרכיב, חשבון, לִבנוֹת, קַנקַן, javadoc, לְנַקוֹת ועוד רבים.

משימות אלה מוגדרות גם בצורה כזו, כי הן מתארות גרף תלות שימושי עבור פרויקט Java, כלומר בדרך כלל מספיק לבצע את משימת הבנייה ו- Gradle (ותוסף Java) יוודא שכל המשימות הדרושות יבוצעו. .

אם אנו זקוקים למשימות מיוחדות נוספות, כמו למשל בניית תמונה של Docker, היא תיכנס גם ל- build.gradle קוֹבֶץ. ההגדרה הקלה ביותר של משימות נראית כך:

משימה שלום {doLast {println 'שלום באלדונג!' }}

אנו יכולים להפעיל משימה על ידי ציון כטיעון ל- CLI של Gradle כך:

$ gradle -q שלום שלום באלדונג!

זה לא יעשה שום דבר מועיל, אלא להדפיס "שלום באלדונג!" כמובן.

במקרה של בנייה מרובת פרויקטים, ככל הנראה יהיו לנו מספר שונה build.gradle קבצים, אחד לכל פרויקט.

ה build.gradle הקובץ מתבצע כנגד פּרוֹיֶקט מופע, עם מופע פרוייקט אחד שנוצר לכל תת-פרוייקט. המשימות לעיל, אשר ניתן להגדיר ב build.gradle קובץ, מתגוררים בתוך פּרוֹיֶקט מופע כחלק מאוסף של מְשִׁימָה חפצים. המשימות עצמה מורכבות ממספר פעולות כרשימה מסודרת.

בדוגמה הקודמת, הוספנו סגירה גרובית להדפסת "שלום באלדונג!" לסוף רשימה זו, על ידי התקשרות ל doLast (פעולת סגירה) על שלנו שלוםמְשִׁימָה לְהִתְנַגֵד. במהלך הביצוע של מְשִׁימָה, גרדל מבצע כל אחד מהם פעולות לפי הסדר, על ידי קריאה ל פעולה. ביצוע (T) שיטה.

3. settings.gradle

Gradle מייצר גם א settings.gradle קוֹבֶץ:

rootProject.name = 'דוגמת דרגה'

ה settings.gradle הקובץ הוא גם תסריט גרובי.

בניגוד ל build.gradle קובץ, רק אחד settings.gradle קובץ מבוצע לפי בניית Gradle. אנו יכולים להשתמש בו כדי להגדיר את הפרויקטים של בנייה מרובת פרויקטים.

חוץ מזה, אנו יכולים גם לרשום קוד כחלק מכיסים שונים של מחזור חיים של מבנה.

המסגרת מחייבת קיום של settings.gradle בבניית פרויקטים מרובים, בעוד שזה אופציונלי לבניית פרויקט יחיד.

משתמשים בקובץ זה לאחר יצירת ה- הגדרות מופע של ה- build, על ידי ביצוע הקובץ נגדו ובכך להגדיר אותו. פירוש הדבר שאנו מגדירים תוכניות משנה בתוכנו settings.gradle קובץ כזה:

כולל 'foo', 'bar'

וגראדל קורא ל בטל כולל (מחרוזת ... projectPaths) שיטה על הגדרות למשל בעת יצירת ה- build.

4. gradle.properties

Gradle לא יוצר a gradle.properties קובץ כברירת מחדל. זה יכול להתגורר במיקומים שונים, למשל בספריית שורשי הפרויקט, בתוך GRADLE_USER_HOME או במיקום שצוין על ידי -Dgradle.user.home דגל שורת פקודה.

קובץ זה מורכב מזוגות עם ערך מפתח. אנו יכולים להשתמש בה כדי להגדיר את התנהגות המסגרת עצמה והיא חלופה לשימוש בדגלי שורת פקודה לתצורה.

דוגמאות למפתחות אפשריים הן:

  • org.gradle.caching = (נכון, לא נכון)
  • org.gradle.daemon = (נכון, לא נכון)
  • org.gradle.parallel = (true, false)
  • org.gradle.logging.level = (שקט, הזהיר, מחזור חיים, מידע, ניפוי שגיאות)

כמו כן, באפשרותך להשתמש בקובץ זה כדי להוסיף מאפיינים ישירות ל- פּרוֹיֶקט אובייקט, למשל, המאפיין עם מרחב השמות שלו: org.gradle.project.property_to_set

מקרה שימוש אחר הוא ציון פרמטרים של JVM כך:

org.gradle.jvmargs = -Xmx2g -XX: MaxPermSize = 256m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8

שים לב שעליו להפעיל תהליך JVM כדי לנתח את gradle.properties קוֹבֶץ. המשמעות היא שפרמטרים אלה של JVM משפיעים רק על תהליכי JVM שהושקו בנפרד.

5. הבנייה בקליפת אגוז

אנו יכולים לסכם את מחזור החיים הכללי של מבנה Gradle כדלקמן, בהנחה שאיננו מריצים אותו כדמון:

  • זה מושק כתהליך JVM חדש
  • זה מנתח את gradle.properties קובץ ומגדיר את Gradle בהתאם
  • לאחר מכן, הוא יוצר הגדרות למשל לבנות
  • ואז, זה מעריך את settings.gradle להגיש נגד הגדרות לְהִתְנַגֵד
  • זה יוצר היררכיה של פרויקטים, בהתבסס על התצורה המוגדרת הגדרות לְהִתְנַגֵד
  • לבסוף, הוא מבצע כל אחד מהם build.gradle להגיש נגד הפרויקט שלה

6. מסקנה

ראינו כיצד קבצי תצורה שונים של Gradle ממלאים מטרות פיתוח שונות. אנו יכולים להשתמש בהם כדי לקבוע תצורה של בניית Gradle וכן את Gradle עצמו, בהתבסס על צרכי הפרויקט שלנו.