מבוא לתוסף Maven Sniffer Maven

1. הקדמה

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

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

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

2. הגדרה -מָקוֹר ו -יַעַד של מהדר Java

נתחיל עם שלום עולם פרויקט Maven - שם אנו משתמשים ב- Java 7 במחשב המקומי שלנו אך ברצוננו לפרוס את הפרויקט לסביבת הייצור שעדיין משתמשת ב- Java 6.

במקרה זה, אנו יכולים להגדיר את תוסף המהדר Maven באמצעות מָקוֹר ו יַעַד שדות המצביעים על Java 6.

ה "מָקוֹר" שדה משמש לציון תאימות עם שינויי שפת Java "יַעַד" שדה משמש לציון תאימות עם שינויים ב- JVM.

בואו נסתכל כעת על תצורת המהדר של Maven של pom.xml:

  org.apache.maven.plugins maven-compiler-plugin 3.7.0 1.6 1.6 

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

3. הצגת אי תאימות API

הבה נבחן כמה קל להציג תאימות API בטעות.

נניח שאנחנו מתחילים לעבוד על דרישה חדשה ואנחנו משתמשים בכמה תכונות API של Java 7 שלא היו קיימות ב- Java 6.

בואו נסתכל על קוד המקור המעודכן:

סטטי ציבורי ריק ריק (String [] args) {System.out.println ("שלום עולם!"); System.out.println (StandardCharsets.UTF_8.name ()); }

java.nio.charset.StandardCharsets הוצג בג'אווה 7.

אם כעת נבצע את מבנה ה- Maven, הוא עדיין יתקדר בהצלחה אך ייכשל בזמן ריצה עם שגיאת קישור בתיבת ייצור עם התקנת Java 6.

בתיעוד Maven מוזכר המלכודת הזו וממליץ להשתמש בתוסף Animal Sniffer כאחת האפשרויות.

4. תאימות API למדיווח

תוסף Sniffer של בעלי חיים מספק שתי יכולות ליבה:

  1. יצירת חתימות של זמן הריצה של Java
  2. בדיקת פרויקט מול חתימות API

בואו ונשנה את ה- pom.xml לכלול את התוסף:

 org.codehaus.mojo animal-sniffer-maven-plugin 1.16 org.codehaus.mojo.signature java16 1.0 בדיקת בדיקת sniffer של בעלי חיים 

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

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

[INFO] ------------------------------------------------------- ------------------------- [INFO] BUILD FAILURE [INFO] ----------------- -------------------------------------------------- ----- [שגיאה] ביצוע הכלי org.codehaus.mojo נכשל: animal-sniffer-maven-plugin: 1.16: check (animal-sniffer) on project example-animal-sniffer-mvn-plugin: נמצאו שגיאות חתימה. אמת אותם והתעלם מההערה המתאימה במידת הצורך.

5. מסקנה

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

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