טיפול ב- Maven שגיאת כותרת LOC לא חוקית

1. הקדמה

לפעמים כאשר צנצנת ברפיו המקומי של Maven שלנו מושחתת, נראה את השגיאה: כותרת LOC לא חוקית.

במדריך זה נלמד מתי זה קורה ואיך לטפל ו אפילו לפעמים למנוע את זה.

2. מתי מתרחש "כותרת LOC לא חוקית"?

Maven מוריד את התלות של הפרויקט למיקום ידוע במערכת הקבצים שלנו שנקרא מאגר מקומי. כל חפץ שמוריד Maven מלווה גם בקבצי הבדיקה SHA1 ו- MD5:

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

במצבים אלה, Maven builds שגיאת "כותרת LOC לא חוקית".

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

3. מחק את המאגר המקומי

תיקון מהיר לשגיאה הוא מחק את כל המאגר המקומי של Maven ובנה את הפרויקט שוב:

rm -rf $ {LOCAL_REPOSITORY}

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

שים לב שמאגר המקומי המוגדר כברירת מחדל נמצא ב- $ {user.home} /. מ"ר / מאגר אלא אם כן ציינו זאת ב settings.xml תָג. אנו יכולים למצוא את המאגר המקומי על ידי הפקודה: עזרה mvn: להעריך-ביטוי = settings.localRepository

4. מצא את הצנצנת המושחתת

פיתרון נוסף הוא לזהות את הצנצנת המושחתת הספציפית ולמחוק אותה מהמאגר המקומי.

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

אנו יכולים לאפשר רישום ברמת איתור באגים על ידי הוספת -X לפקודת build:

חבילת mvn -X

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

כמו כן, אנו יכולים לבדוק את תקינות הארכיון עם ה- zip -T פקודה:

מצא $ {LOCAL_REPOSITORY} שם "* .jar" | xargs -L 1 zip -T | שגיאת grep

5. אמת את סכומי הבדיקה

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

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

ישנן שתי אפשרויות, או לְהִכָּשֵׁל לבנות אם סכומי הבדיקה אינם תואמים:

-C, - סכומי בדיקה קפדניים

אוֹ לְהַזהִיר שהיא אפשרות ברירת המחדל:

-c, - סכומי צ'קס רופפים

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

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

    codehausSnapshots קודאוס Snapshots שקר תמיד נכשלים 

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

6. מסקנה

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