Maven érvénytelen LOC fejléc hiba kezelése
1. Bemutatkozás
Néha, amikor a helyi Maven repo-ban egy üveg megsérült, látni fogjuk a hibát: Érvénytelen LOC fejléc.
Ebben az oktatóanyagban megtanuljuk, mikor történik, és hogyan kell kezelni időnként megakadályozza.
2. Mikor fordul elő „érvénytelen LOC fejléc”?
Maven letölti a projekt függőségeit a fájlrendszerünk ismert helyére, amelyet helyi adattárnak hívnak. A Maven által letöltött összes műtárgyhoz tartozik az SHA1 és MD5 ellenőrző összegű fájlja is:

Ezen ellenőrző összegek célja a kapcsolódó műtárgyak integritásának biztosítása. Mivel a hálózatok és a fájlrendszerek meghibásodhatnak, csakúgy, mint bármi más, előfordul, hogy az artefaktumok megsérülnek, így a műtárgy tartalma nem egyezik meg az aláírással.
Ezekben a helyzetekben a Maven összeállítja az „érvénytelen LOC fejléc” hibát.
A megoldás az, hogy eltávolítja a sérült edényt az adattárból. Nézzünk meg pár módot.
3. Törölje a Helyi adattárat
A hiba gyors megoldása a törölje az egész Maven helyi adattárat, és építse újra a projektet:
rm -rf $ {LOCAL_REPOSITORY}
Ez törli a helyi gyorsítótárat és újratölti az összes projektfüggőséget - nem túl hatékony.
Vegye figyelembe, hogy az alapértelmezett helyi adattár a következő helyen található: $ {user.home} /. m2 / adattár hacsak nem határoztuk meg a mi settings.xml címke. A helyi adattárat a következő paranccsal is megtalálhatjuk: mvn help: értékeld -Dexpression = settings.localRepository
4. Keresse meg a sérült edényt
Egy másik megoldás az azonosítsa a sérült jar-t és törölje a helyi adattárból.
Amikor a Maven output stack nyomkövetési parancsot használjuk, akkor a sérült jar részleteit tartalmazza, ha nem sikerül feldolgozni.
Engedélyezhetjük a hibakeresési szintű naplózást az -X hozzáadásával a build parancshoz:
mvn -X csomag
Az így kapott verem nyom a sérült edényt jelzi a napló vége felé. A sérült edény azonosítása után megkereshetjük a helyi adattárban és törölhetjük. A felépítéskor Maven megpróbálja újból letölteni a korsót.
Ezenkívül tesztelhetjük az archívum integritását a cipzár -T parancs:
keresse meg a $ {LOCAL_REPOSITORY} -nevet "* .jar" | xargs -L 1 zip -T | grep hiba
5. Ellenőrizze az ellenőrző összegeket
A korábban említett két megoldás csak arra kényszeríti Mavenet, hogy töltse le újra a korsót. Természetesen a probléma újból felmerülhet a jövőbeli letöltések során. Ezt megakadályozhatjuk úgy, hogy konfiguráljuk a Mavent az ellenőrző összeg érvényesítésére, miközben az artefaktumot távoli adattárból tölti le.
Hozzáadhatjuk a –Szigorú-ellenőrző összegek vagy -C opciót a Maven parancshoz. Ez azt eredményezi, hogy Maven meghiúsítja az összeállítást, ha a számított ellenőrző összeg nem egyezik az ellenőrző összegű fájlokban szereplő értékkel.
Két lehetőség van, akár nem sikerül a build, ha az ellenőrző összegek nem egyeznek:
-C, - szigorú ellenőrző összegek
vagy figyelmeztet amely az alapértelmezett opció:
-c, - laza ellenőrző összegek
Ma Mavennek szüksége van az aláírási fájlokra, miközben műtárgyakat tölt fel a központi adattárba. De a központi adattárban lehetnek olyan artefaktumok, amelyek nem rendelkeznek az aláírási fájlokkal, különösen a történelmi. Ezért az alapértelmezett opció figyelmeztet.
Az állandóbb megoldás érdekében konfigurálhatjuk ellenőrző összegPolitika Maven-ben settings.xml fájl. Ez a tulajdonság azt a viselkedést határozza meg, amikor egy műtárgy ellenőrző összegének ellenőrzése sikertelen. A jövőbeni problémák elkerülése érdekében szerkesszük az oldalunkat settings.xml fájl nem sikerül letölteni, ha az ellenőrző összeg nem sikerül:
codehausSnapshots A Codehaus pillanatképek false mindig sikertelen
Természetesen ezt meg kell tennünk minden beállított tárhelyünkön.
6. Következtetés
Ebben a gyors írásban láthattuk, hogy mikor léphet fel érvénytelen LOC fejléc hiba, és lehetőségeket kínálunk a kezelésére.