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ť.