כיצד ליצור תוסף Maven

1. הקדמה

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

למרבה המזל, Maven מספק כמה כלים שימושיים שיעזרו לנו בתהליך זה.

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

אנו נראה גם כיצד להשתמש בו בפרויקטים שלנו וכיצד ליצור תיעוד עבורו.

2. יצירת תוסף

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

עכשיו שאנחנו יודעים מה אנחנו הולכים לפתח, הדבר הבא שעלינו לעשות הוא ליצור פרויקט Maven. בתוך ה pom.xml נגדיר את groupId, artifactId ו גִרְסָה של התוסף שלנו:

 4.0.0 com.baeldung counter-maven-plugin maven-plugin 0.0.1-SNAPSHOT counter-maven-plugin Maven Mojo //maven.apache.org 1.8 1.8 

שימו לב שהגדרנו את האריזה ל תוסף maven.

במקרה זה, יצרנו את הפרויקט באופן ידני, אך נוכל גם לעשות זאת באמצעות ה- maven-archetype-mojo:

ארכיטיפ mvn: ליצור -DgroupId = com.baeldung -DartifactId = תוסף counter-maven -Dversion = 0.0.1-SNAPSHOT -DarchetypeGroupId = org.apache.maven.archetypes -DarchetypeArtifactId = maven-archetype-mojo

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

3. יצירת מוג'ו

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

המוג'ו שלנו יהיה אחראי על ספירת מספר התלות בפרויקט.

3.1. הוספת תלות

לפני שיוצרים את המוג'ו, עלינו להוסיף כמה תלות pom.xml:

  org.apache.maven maven-plugin-api 3.6.3 org.apache.maven.plugin-tools maven-plugin-annotations 3.6.0 סיפק org.apache.maven maven-project 2.2.1 

ה maven-plugin-api תלות נדרשת ומכילה את הכיתות והממשקים הדרושים ליצירת המוגו שלנו. ה הערות Maven-plugin התלות שימושית לשימוש בהערות בשיעורים שלנו. ה פרויקט maven תלות מאפשר לנו לגשת למידע על הפרויקט שבו אנו כוללים את התוסף.

3.2. יצירת כיתת מוג'ו

עכשיו אנחנו מוכנים ליצור את המוג'ו שלנו!

מוג'ו צריך ליישם את מוג'ו מִמְשָׁק. במקרה שלנו, נרחיב מ מופשט אז נצטרך רק ליישם את לבצע שיטה:

@Mojo (name = "counter-dependency", defaultPhase = LifecyclePhase.COMPILE) מחלקה ציבורית DependencyCounterMojo מרחיב את AbstractMojo {// ...}

כמו שאנו יכולים לראות, מונה תלות הוא שם המטרה. מצד שני, צירפנו אותו ל- לְלַקֵט שלב כברירת מחדל, כך שלא נצטרך בהכרח לציין שלב בעת שימוש במטרה זו.

כדי לקבל גישה למידע על הפרויקט, עלינו להוסיף א MavenProject כפרמטר:

@Parameter (defaultValue = "$ {project}", חובה = true, readonly = true) פרויקט MavenProject;

אובייקט זה יוזרק על ידי Maven עם יצירת הקשר.

בשלב זה אנו יכולים ליישם את שיטת הביצוע ולספור את מספר התלות של הפרויקט:

חלל ציבורי ביצוע () זורק MojoExecutionException, MojoFailureException {List dependencies = project.getDependencies (); מספר תלות ארוך = תלות.זרם (). ספירה (); getLog (). info ("מספר התלות:" + מספר תלות); }

ה getLog () השיטה מספקת גישה ליומן Maven. ה מופשט כבר מטפל במחזור החיים שלה.

3.3. הוספת פרמטרים

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

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

לפיכך, בואו ניצור א תְחוּם פרמטר במוגו שלנו:

@Parameter (property = "scope") טווח מחרוזות;

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

עכשיו נשנה את שלנו לבצע שיטה להשתמש בפרמטר זה ולסנן את התלות בעת הספירה:

חלל ציבורי ביצוע () זורק MojoExecutionException, MojoFailureException רשימת תלות = project.getDependencies (); numDependencies ארוך = dependencies.stream () .filter (d -> (scope == null 

סוגים מתקדמים יותר של פרמטרים מוסברים בתיעוד הרשמי.

4. בדיקת התוסף

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

קודם כל, עלינו להתקין את התוסף במאגר המקומי שלנו:

mvn נקי להתקין

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

4.1. ביצוע התוסף שלנו

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

mvn groupId: artifactId: גרסה: מטרה

במקרה שלנו זה נראה כך:

mvn com.baeldung: counter-maven-plugin: 0.0.1-SNAPSHOT: counter-dependency

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

מונה מונה: מונה תלות

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

 com.baeldung 

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

[INFO] סורק לפרויקטים ... [INFO] [INFO] ----------------------------------- [INFO] בניית נגדי-maven-plugin Maven Mojo 0.0.1-SNAPSHOT [INFO] ---------------------------- [maven- תוסף] ---------------------------- [INFO] [INFO] --- counter-maven-plugin: 0.0.1-SNAPSHOT : דלפק תלות (ברירת מחדל-קלי) @ תוסף נגד-maven --- [INFO] מספר תלות: 3 [INFO] --------------------- -------------------------------------------------- - [INFO] בנה הצלחה [INFO] ----------------------------------------- ------------------------------- [INFO] זמן כולל: 0.529 שניות [INFO] סיים בתאריך: 2019-11-30T20 : 43: 41 + 01: 00 [INFO] -------------------------------------- ---------------------------------

אנחנו יכולים גם להגדיר את תְחוּם פרמטר באמצעות מאפייני שורת פקודה:

דלפק mvn: תלות-נגד -Dscope = מבחן

שימו לב שה- תְחוּם השם הוא זה שהגדרנו ב- תכונה התכונה של הפרמטר שלנו במוג'ו.

4.2. שימוש בתוסף שלנו בפרויקט

בואו נבדוק עכשיו את התוסף שלנו על ידי שימוש בו בפרויקט!

אנחנו הולכים ליצור פרויקט פשוט מאוד של Maven עם כמה תלות שהתוסף שלנו יספור:

 4.0.0 com.baeldung לדוגמא pom 0.0.1-SNAPSHOT org.apache.commons commons-lang3 3.9 junit junit 4.12 test 

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

   com.baeldung counter-maven-plugin 0.0.1-SNAPSHOT מבחן תלות-נגד 

שים לב שציינו את ה- תְחוּם פרמטר ב תְצוּרָה צוֹמֶת. כמו כן, לא ציינו שום שלב משום שהמוג'ו שלנו מחובר ל- לְלַקֵט שלב כברירת מחדל.

עכשיו, אנחנו רק צריכים להפעיל את לְלַקֵט שלב לביצוע התוסף שלנו:

קומפילציה נקייה של mvn

והתוסף שלנו ידפיס את מספר ה- מִבְחָן תלות:

[INFO] סורק לפרויקטים ... [INFO] [INFO] ----------------------------------- ------------- [INFO] דוגמה לבנייה 0.0.1-SNAPSHOT [INFO] ------------------------ -------- [pom] --------------------------------- [INFO] [INFO] --- תוסף maven-clean: 2.5: נקי (נקי ברירת מחדל) @ דוגמה --- [INFO] [INFO] --- תוסף נגד maven: 0.0.1-SNAPSHOT: דלפק תלות (ברירת מחדל) @ דוגמה --- [INFO] מספר תלות: 1 [INFO] ----------------------------------- ------------------------------------ [INFO] בנה הצלחה [INFO] ----- -------------------------------------------------- ----------------- [INFO] זמן כולל: 0.627 שניות [INFO] סיים בשעה: 2019-11-25T18: 57: 22 + 01: 00 [INFO] --- -------------------------------------------------- -------------------

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

5. הוספת תיעוד

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

נסקור בקצרה כיצד ליצור תיעוד זה באמצעות תוסף maven-plugin.

תוסף maven-plugin כבר נכלל בפרויקט, אך אנו נעדכן אותו לשימוש בגרסה האחרונה.

כמו כן, אנו נעשה את אותו הדבר עבור תוסף אתר maven:

    org.apache.maven.plugins maven-plugin-plugin 3.6.0 org.apache.maven.plugins maven-site-plugin 3.8.2 

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

 Baeldung //www.baeldung.com/ 

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

   דוח org.apache.maven.plugins maven-plugin-plugin 

לבסוף, ניצור את התיעוד באמצעות פקודת האתר maven:

אתר mvn

בתוך תיקיית היעד, אנו יכולים למצוא א אֲתַר ספריה עם כל קבצי ה- HTML שנוצרו. ה plugin-info.html הוא זה שמכיל את תיעוד התוסף:

אפשרויות נוספות להוסיף לתיעוד שלנו ניתן למצוא במדריך תיעוד התוספים Maven.

6. מסקנה

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

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

כמו תמיד, קוד המקור המלא של הדוגמאות זמין ב- GitHub.


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