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.