תוסף Maven Enforcer

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

במדריך זה נלמד על תוסף Maven Enforcer וכיצד נוכל להשתמש בו כדי להבטיח את רמת הציות בפרויקט שלנו.

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

2. תלות

כדי להשתמש בתוסף בפרויקט שלנו, עלינו להוסיף את התלות הבאה שלנו pom.xml:

 org.apache.maven.plugins maven-enforcer-plugin 3.0.0-M2 

הגרסה האחרונה של התוסף זמינה ב- Maven Central.

3. תצורת תוספים ויעדים

ל- Maven Enforcer שתי מטרות: אוכף: לאכוף ו אוכף: מידע על תצוגה.

ה לֶאֱכוֹף המטרה פועלת במהלך בניית פרויקט לביצוע כללים שצוינו בתצורה, בעוד ש- מידע על תצוגה המטרה מציגה מידע עדכני על הכללים המובנים שקיימים בפרויקטים pom.xml.

בואו נגדיר את לֶאֱכוֹף המטרה ב הוצאות להורג תָג. יתר על כן, נוסיף את תְצוּרָה תג שמחזיק את כללים הגדרות לפרויקט:

... לאכוף לאכוף ...

4. חוקי Maven Enforcer

מילת המפתח לֶאֱכוֹף נותן הצעה עדינה לקיומם של כללים לעמוד בהם. כך עובד התוסף Maven Enforcer. אנו מגדירים את זה עם כמה כללים שיש לאכוף בשלב הבנייה של הפרויקט.

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

4.1. אסור על תלות כפולה

בפרויקט רב-מודולי, שבו מתקיימים יחסי הורה-ילד בקרב POMs, להבטיח שאין כפיל תלות בגמר האפקטיבי POM עבור פרויקט יכולה להיות משימה מסובכת. אבל, עם banDuplicatePomDependencyVersions הכלל, אנו יכולים בקלות לוודא שהפרויקט שלנו נקי מתקלות כאלה.

כל שעלינו לעשות הוא להוסיף את ה- banDuplicatePomDependencyVersions תייג ל כללים החלק של תצורת התוסף:

...    ...

כדי לבדוק את התנהגות הכלל, נוכל לשכפל תלות אחת pom.xml ורוץ קומפילציה נקייה mvn. זה יפיק את שורות השגיאה הבאות במסוף:

... [אזהרה] כלל 0: org.apache.maven.plugins.enforcer.BanDuplicatePomDependencyVersions נכשל עם ההודעה: נמצא הצהרת תלות כפולה אחת בפרויקט זה: - dependencies.dependency [io.vavr: vavr: jar] (פעמיים) [INFO] ------------------------------------------------------- ------------------------- [INFO] BUILD FAILURE [INFO] ----------------- -------------------------------------------------- ----- [INFO] זמן כולל: 1.370 שניות [INFO] הסתיים בשעה: 2019-02-19T10: 17: 57 + 01: 00 ...

4.2. דרוש גרסת Maven ו- Java

ה requireMavenVersion ו requireJavaVersion הכללים מאפשרים נעילה בכל פרויקט של גרסאות Maven ו- Java הנדרשות, בהתאמה. זה יעזור לבטל את הפער שעשוי לנבוע משימוש בגרסאות שונות של Maven ו- JDK בסביבות פיתוח.

בואו נעדכן את כללים החלק של תצורת התוסף:

 3.0   1.8 

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

יתר על כן, שני הכללים מקבלים גם א הוֹדָעָה פרמטר לציון הודעה מותאמת אישית:

... 3.0 גרסת Maven לא חוקית. זה צריך להיות, לפחות, 3.0 ...

4.3. משתנה סביבתי

עם ה requireEnvironmentVariable כלל, אנו יכולים להבטיח כי משתנה סביבה מסוים מוגדר בסביבת הביצוע.

ניתן לחזור על כך כדי להכיל יותר ממשתנה נדרש אחד:

 UI cook 

4.4. דרוש פרופיל פעיל

פרופילים ב- Maven עוזרים לנו להגדיר מאפיינים שיהיו פעילים כאשר היישום שלנו נפרס לסביבות שונות.

כתוצאה מכך, אנו יכולים להשתמש ב- requireActiveProfile כלל כאשר עלינו להבטיח שפרופיל שצוין אחד או יותר פעיל, ובכך להבטיח ביצוע מוצלח של היישום שלנו:

 מקומי, בסיס חסרים פרופילים פעילים 

בקטע הקוד לעיל השתמשנו ב- הוֹדָעָה נכס כדי לספק הודעה מותאמת אישית כדי להראות אם בדיקת הכללים נכשלת.

4.5. כללים אחרים

לתוסף Maven Enforcer יש כללים רבים אחרים לקידום איכות הפרויקט ועקביות ללא קשר לסביבת הפיתוח.

כמו כן, לתוסף יש פקודה להציג מידע על כמה כללים שהוגדרו כרגע:

אכיפת mvn: הצגת מידע

5. כללים מותאמים אישית

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

ראשית, עלינו ליצור פרוייקט Java חדש שיכיל את הכלל המותאם אישית שלנו. כלל מותאם אישית הוא מחלקה לְהִתְנַגֵד זֶה מיישם את EnforceRule ממשק ועוקף את לבצע() שיטה:

לבצע חלל ציבורי (EnforcerRuleHelper enforcerRuleHelper) זורק EnforcerRuleException {try {String groupId = (String) enforcerRuleHelper.evaluate ("$ {project.groupId}"); if (groupId == null ||! groupId.startsWith ("org.baeldung")) {זרוק EnforcerRuleException חדש ("מזהה קבוצת הפרויקט לא מתחיל עם org.baeldung"); }} לתפוס (ExpressionEvaluationException ex) {לזרוק EnforcerRuleException חדש ("לא מצליח לחפש ביטוי" + ex.getLocalizedMessage (), ex); }}

הכלל המותאם אישית שלנו פשוט בודק אם פרויקט היעד הוא groupId מתחיל עם org.baeldung או שלא.

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

אנו יכולים להשתמש בכלל המותאם אישית שלנו על ידי הוספתו כתלות בתוסף Maven Enforcer:

...    ...

לידיעתך, אם פרויקט הכלל המותאם אישית אינו חפץ שפורסם ב- Maven Central, אנו יכולים להתקין אותו ברשימת ה- Maven המקומית על ידי הפעלת ה- mvn נקי להתקין.

זה יהפוך אותו לזמין בעת ​​קומפילציה של פרויקט היעד בעל התוסף Maven Enforcer. אנא עיין בתיעוד של התוסף לקבלת הכלל המותאם אישית למידע נוסף.

כדי לראות את זה בפעולה, אנחנו יכולים להגדיר את groupId המאפיין של הפרויקט עם תוסף ה- Enforcer לכל דבר אחר שאינו "org.baeldung" והפעל קומפילציה נקייה של mvn.

6. מסקנה

במדריך מהיר זה, ראינו כיצד התוסף Maven Enforcer יכול להיות תוספת שימושית לחזה התוספים הקיים שלנו. היכולת לכתוב כללים מותאמים אישית משפרת את טווח היישומים שלה.

שים לב כי עלינו לבטל את התגובה על התלות והשלטון לדוגמא כלל מותאם אישית בקוד המקור המלא של הדוגמה הזמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found