Spracovanie chyby Maven, neplatná hlavička LOC

1. Úvod

Niekedy, keď je jar v našom lokálnom repozitári Maven poškodený, uvidíme chybu: Neplatná hlavička LOC.

V tomto tutoriále sa dozvieme, kedy k tomu dôjde a ako s nimi zaobchádzať a aj tomu občas zabrániť.

2. Kedy dôjde k „neplatnému hlavičke LOC“?

Maven sťahuje závislosti projektu do známeho umiestnenia v našom súborovom systéme, ktoré sa nazýva lokálne úložisko. Každý artefakt, ktorý Maven stiahne, je tiež sprevádzaný súbormi kontrolného súčtu SHA1 a MD5:

Účelom týchto kontrolných súčtov je zabezpečiť integritu pridružených artefaktov. Odkedy siete a súborové systémy môžu zlyhať, rovnako ako čokoľvek iné, existujú prípady, keď sa artefakty poškodia, takže obsah artefaktu sa nezhoduje s podpisom.

V týchto situáciách zostaví Maven chybu „neplatná hlavička LOC“.

Riešením je odstránenie poškodenej nádoby z úložiska. Pozrime sa na niekoľko spôsobov.

3. Odstráňte lokálne úložisko

Rýchla oprava chyby je odstráňte celé lokálne úložisko Maven a znovu postavte projekt:

rm -rf $ {LOCAL_REPOSITORY}

Týmto sa vymaže lokálna vyrovnávacia pamäť a znova sa stiahnu všetky závislosti projektu - nie veľmi efektívne.

Upozorňujeme, že predvolené miestne úložisko je na $ {user.home} / .m2 / úložisko pokiaľ sme to neurčili v našom nastavenia.xml značka. Lokálne úložisko nájdeme aj pomocou príkazu: Pomocník mvn: vyhodnotiť -Dexpression = settings.localRepository

4. Nájdite poškodenú nádobu

Ďalším riešením je identifikujte konkrétnu poškodenú nádobu a odstráňte ju z miestneho úložiska.

Keď použijeme príkaz sledovania výstupného zásobníka Maven, bude obsahovať podrobnosti poškodenej nádoby, keď ju nedokáže spracovať.

Môžeme povoliť protokolovanie na úrovni ladenia pridaním -X do príkazu build:

balíček mvn -X

Výsledné sledovanie zásobníka bude označovať poškodenú nádobu na konci protokolu. Po identifikácii poškodenej nádoby ju môžeme vyhľadať v miestnom úložisku a odstrániť. Teraz po zostavení sa Maven pokúsi súbor znova stiahnuť.

Integritu archívu tiež môžeme otestovať pomocou zips -T príkaz:

nájsť $ {LOCAL_REPOSITORY} -name "* .jar" | xargs -L 1 zip -T | grep chyba

5. Overte kontrolné súčty

Dve vyššie spomenuté riešenia prinútia spoločnosť Maven iba k opätovnému stiahnutiu nádoby. Problém sa samozrejme môže pri budúcich sťahovaniach vyskytnúť znova. Môžeme tomu zabrániť nakonfigurovaním Mavenu na overenie kontrolného súčtu pri sťahovaní artefaktu zo vzdialeného úložiska.

Môžeme pridať –Prísne-kontrolné súčty alebo -C možnosť príkazu Maven. Toto spôsobí, že Maven zlyhá v zostavení, ak vypočítaný kontrolný súčet nezodpovedá hodnote v súboroch s kontrolným súčtom.

Existujú dve možnosti zlyhať zostava, ak sa kontrolné súčty nezhodujú:

-C, - prísny kontrolný súčet

alebo varovať čo je predvolená možnosť:

-c, - laxné-kontrolné súčty

Dnes Maven vyžaduje súbory podpisov pri nahrávaní artefaktov do centrálneho úložiska. ale v centrálnom úložisku môžu byť artefakty, ktoré nemajú súbory s podpismi, najmä tých historických. Preto je predvolená možnosť varovať.

Pre trvalejšie riešenie môžeme nakonfigurovať kontrolný súčetPolícia v Mavenovej nastavenia.xml spis. Táto vlastnosť určuje správanie, keď sa nepodarí overiť kontrolný súčet artefaktu. Aby sme sa v budúcnosti vyhli problémom, upravme našu nastavenia.xml súbor, ktorý zlyhá pri načítaní, keď zlyhá kontrolný súčet:

    codehausSnapshots Codehaus Snapshots false vždy zlyhajú 

To by sme samozrejme museli urobiť pre každé z našich nakonfigurovaných úložísk.

6. Záver

V tomto rýchlom zápise sme videli, kedy môže dôjsť k chybe neplatnej hlavičky LOC, a možnosti, ako ju vyriešiť.