Rukovanje pogreškom pogrešnog zaglavlja LOC-a Maven

1. Uvod

Ponekad ćemo vidjeti pogrešku kada je jar u našem lokalnom Maven repo-u oštećen: Nevažeće zaglavlje LOC-a.

U ovom uputstvu naučit ćemo kada se to dogodi i kako postupati i čak ponekad i spriječiti.

2. Kada se dogodi "Nevaljano zaglavlje LOC-a"?

Maven preuzima ovisnosti o projektu na poznato mjesto u našem datotečnom sustavu koje se naziva lokalno spremište. Svaki artefakt koji Maven preuzme također je popraćen datotekama SHA1 i MD5:

Svrha ovih kontrolnih suma je osigurati integritet povezanih artefakata. Od mreže i datotečni sustavi mogu propasti, baš kao i bilo što drugo, postoje slučajevi kada se artefakti oštete, čineći da se sadržaj artefakta ne podudara s potpisom.

U tim situacijama Maven izrađuje pogrešku "nevažeće LOC zaglavlje".

Rješenje je uklanjanje oštećene staklenke iz spremišta. Pogledajmo nekoliko načina.

3. Izbrišite Lokalno spremište

Brzo rješenje za pogrešku je izbrišite cijelo Maven lokalno spremište i ponovno izradite projekt:

rm -rf $ {LOCAL_REPOSITORY}

Ovo će izbrisati lokalnu predmemoriju i ponovno preuzeti sve ovisnosti o projektu - nije vrlo učinkovit.

Imajte na umu da je zadani lokalni repozitorij na $ {user.home} /. m2 / spremište osim ako to nismo naveli u našem postavke.xml označiti. Lokalno spremište također možemo pronaći naredbom: mvn pomoć: procijenite -Dexpression = settings.localRepository

4. Pronađite pokvarenu teglu

Drugo rješenje je da prepoznati određenu oštećenu jar i izbrisati je iz lokalnog spremišta.

Kada upotrijebimo naredbu Maven output stack trace, ona će sadržavati oštećene detalje jar kad je ne uspije obraditi.

Zapisivanje na razini otklanjanja pogrešaka možemo omogućiti dodavanjem -X naredbi za izgradnju:

mvn -X paket

Rezultirajući trag stoga označit će oštećenu staklenku prema kraju dnevnika. Nakon identificiranja oštećene staklenke, možemo je pronaći u lokalnom spremištu i izbrisati. Sada nakon izrade, Maven će pokušati ponovo preuzeti staklenku.

Također, možemo testirati integritet arhive pomoću zip -T naredba:

pronađi $ {LOCAL_REPOSITORY} -ime "* .jar" | xargs -L 1 zip -T | grep greška

5. Provjerite kontrolne sume

Dva ranije spomenuta rješenja samo će prisiliti Maven da ponovo preuzme staklenku. Naravno, problem bi se mogao ponoviti u budućim preuzimanjima. To možemo spriječiti konfiguriranjem Mavena da provjeri valjanost kontrolne sume tijekom preuzimanja artefakta iz udaljenog spremišta.

Možemo dodati –Striktne kontrolne sume ili -C opcija za naredbu Maven. To će uzrokovati da Maven ne uspije izraditi ako izračunata kontrolna suma ne odgovara vrijednosti u datotekama kontrolne sume.

Postoje dvije mogućnosti iznevjeriti graditi ako se kontrolne sume ne podudaraju:

-C, - stroge kontrolne sume

ili upozoriti što je zadana opcija:

-c, - labave-kontrolne sume

Danas Maven zahtijeva datoteke s potpisima dok prenosi artefakte u središnje spremište. Ali u središnjem spremištu mogu se nalaziti artefakti koji nemaju datoteke s potpisima, posebno povijesne. Zbog toga je zadana opcija upozoriti.

Za trajnije rješenje možemo konfigurirati checkumPolicy u Mavenovu postavke.xml datoteka. Ovo svojstvo specificira ponašanje u slučaju kada provjera kontrolne sume artefakta ne uspije. Da bismo izbjegli probleme u budućnosti, uredimo svoj postavke.xml datoteka za neuspješno preuzimanje kada kontrolna suma ne uspije:

    codehausSnapshots Codehaus Snapshots false uvijek ne uspije 

To bismo, naravno, trebali učiniti za svako od naših konfiguriranih spremišta.

6. Zaključak

U ovom brzom zapisu vidjeli smo kada se može dogoditi nevaljana pogreška LOC zaglavlja i opcije kako to riješiti.