קבצי JAR מרובי שחרורים עם Maven

1. הקדמה

אחת התכונות החדשות שג'אווה 9 מביאה לנו היא היכולת לבנות ג'ארים מרובי-שחרור (MRJAR). כפי שאומרת הצעת ה- JDK Enhancement, זה מאפשר לנו לקבל גרסאות שונות של Java לשחרור ספציפי של מחלקה באותו JAR.

במדריך זה נחקור כיצד להגדיר קובץ MRJAR באמצעות Maven.

2. מייבן

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

בחלקים הבאים נחקור כיצד להשתמש בו לבניית MRJAR במקום.

3. פרויקט לדוגמא

נתחיל בדוגמה בסיסית.

ראשית, נגדיר מחלקה המדפיסה את גרסת Java המשמשת כיום; לפני Java 9, אחת הגישות בהן נוכל להשתמש הייתה System.getProperty שיטה:

מחלקה ציבורית DefaultVersion {גרסת מחרוזת ציבורית () {return System.getProperty ("java.version"); }}

כעת, מג'אווה 9 ואילך, אנו יכולים להשתמש בחדש גִרְסָה שיטה מה- זמן ריצה מעמד:

מחלקה ציבורית DefaultVersion {גרסת מחרוזת ציבורית () {return Runtime.version (). toString (); }}

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

בנוסף, בואו להוסיף אפליקציה מחלקה לרישום הגרסה:

אפליקציה בכיתה ציבורית {לוגר לוגר לוגר סופי סטטי פרטי = LoggerFactory.getLogger (App.class); ראשי ריק סטטי ציבורי (String [] args) {logger.info (String.format ("פועל ב-% s", גרסת DefaultVersion חדשה (). גרסה ())); }}

לבסוף, בוא נניח כל גרסה של גרסת ברירת מחדל לשלה src / main מבנה ספריות:

├── pom.xml ├── src │ ├── ראשי │ │ ├── java │ │ │ ─── com │ │ │ └── baeldung │ │ │ └── multireleaseapp │ │ │ ├── גרסת ברירת מחדל. java │ │ │ └── App.java │ │ └── java9 │ │ └── com │ │ └── baeldung │ │ └── multireleaeapp │ │ └── DefaultVersion.java 

4. תצורה

כדי להגדיר את תצורת ה- MRJAR מהשיעורים שלמעלה, עלינו להשתמש בשני תוספי Maven: תוסף המהדר ותוסף ה- JAR.

4.1. תוסף מהדר Maven

בתוסף Maven Compiler, עלינו להגדיר ביצוע אחד עבור כל גרסת Java שנארז.

במקרה זה, אנו מוסיפים שניים:

   org.apache.maven.plugins maven-compiler-plugin compile-java-8 compile 1.8 1.8 compile-java-9 compile compile 9 $ {project.basedir} / src / main / java9 $ {project.build.outputDirectory} / META -INF / גרסאות / 9 

נשתמש בביצוע הראשון לקמפל-ג'אווה -8 להרכיב את מחלקת Java 8 שלנו ואת לקמפל-ג'אווה -9 ביצוע כדי להרכיב את מחלקת Java 9 שלנו.

אנחנו יכולים לראות את זה יש צורך להגדיר את compileSourceRoot ו ספריית פלט תגים עם התיקיות המתאימות לגירסת Java 9.

עם זאת, נכון ליום תוסף maven-compiler 3.7.1, איננו צריכים להגדיר את ספריית הפלט באופן ידני. במקום זאת, כל שעלינו לעשות הוא לאפשר את multiReleaseOutput תכונה:

 9 $ {project.basedir} / src / main / java9 נכון 

כאשר מוגדר ל נָכוֹן, תוסף המהדר מעביר את כל המחלקות הספציפיות לשחרור אל ה- META-INF / גרסאות / $ {release} מַדרִיך. שים לב שעלינו להגדיר את לְשַׁחְרֵר תייג לגרסת Java הרצויה כאן, אחרת תוסף המהדר נכשל.

4.2. תוסף Maven JAR

אנו משתמשים בתוסף JAR כדי להגדיר את רב שחרור כניסה ל נָכוֹן בשלנו לְהַפְגִין קוֹבֶץ. עם תצורה זו, זמן הריצה של Java יראה בתוך META-INF / גרסאות תיקיה של קובץ ה- JAR שלנו לשיעורים ספציפיים לגירסה; אחרת, משתמשים רק בכיתות הבסיס.

בואו נוסיף את תוסף maven-jar תְצוּרָה:

 org.apache.maven.plugins maven-jar-plugin 3.2.0 נכון 

5. בדיקות

הגיע הזמן לבדוק את קובץ ה- JAR שנוצר.

כאשר אנו מבצעים עם Java 8, נראה את הפלט הבא:

[ראשי] INFO com.baeldung.multireleaseapp.App - פועל בתאריך 1.8.0_252

אבל אם נבצע עם Java 14, נראה:

[ראשי] INFO com.baeldung.multireleaseapp.App - פועל בתאריך 14.0.1 + 7

כפי שאנו רואים, כעת הוא משתמש בפורמט הפלט החדש. שים לב שלמרות שה- MRJAR שלנו נבנה עם Java 9, הוא תואם למספר גרסאות פלטפורמת Java רבות.

6. מסקנה

במדריך קצר זה ראינו כיצד להגדיר את הכלי לבנות Maven ליצירת MRJAR פשוט.

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


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