Nexus - de ce să nu folosiți ultima dată
Articol disponibil pe: Русский Engleză
Ori de câte ori trebuia să lucrez cu Sonatype Nexus la un moment dat, a existat o neînțelegere cu privire la ceea ce a fost cea mai recentă versiune a artefactului și de ce nu poate fi folosită.
Orice artefact are un anumit fișier de informații maven-metadata.xml. al căror conținut este aproximativ următorul:
Acest lucru se datorează unui algoritm care utilizează Nexus pentru a găsi LATEST: prima arată dacă în maven-metadata.xml există
Inițial, acest mecanism funcționează numai pentru că maven-metadata.xml pur și simplu nu există
Cineva face asta
Lucrările se desfășoară pe ramuri și două echipe completează în mod independent artefacte cu versiuni diferite. Cine a inundat ultima - una și ultima versiune. Pur și simplu până la final se adaugă versiunea care este acum deploitsya.
Așa cum apare în Nexus LATEST funcționează corect numai pentru plug-in-uri și este imposibil să se utilizeze acest mecanism pentru artefacte obișnuite.
Câteva întrebări așteptate:
Cine actualizează maven-metadata.xml?
Acest fișier este actualizat nu de Nexus, ci de Maven Deploy Plugin: mai întâi este necesar maven-medatadata.xml existent din depozit. apoi actualizează informațiile și le revarsă înapoi în depozit. Dacă nu există niciun fișier existent, unul nou este creat și încărcat în Nexus.
Unde se află dacă Maven nu o folosește deloc?
Maven această etichetă și nu. Nexus are unele mecanisme utilitare, printre care - Reface metadatele. Acest element poate fi găsit în meniul contextual al arhivelor și directoarelor. Acest mecanism elimină maven-metadata.xml existent. scanează artefacte și creează un fișier nou. Și în acel moment el creează
Ordonarea este derivată din parsarea versiunii șirului și susține versiunea semantică cu semantică suplimentară pentru clasificatorii specifici. Mai multe detalii se găsesc în documentația pentru clasa de implementare GenericVersionScheme.
de ce devine caduc?
Chiar dacă se întâmplă metadatele Rebuild, este o acțiune unică. Apoi, fișierul metadate va fi în continuare actualizat cu Maven. Și nu face nimic cu el
Să însumăm rezultatele
Dacă aveți nevoie de un mecanism pentru a obține cea mai recentă versiune a artefactului, tu trebuie să creați acest mecanism (scrieți un script). Mecanismul utilizat de Nexus implicit la un moment dat nu mai funcționează.
În plus, dacă credeți că aveți nevoie de cea mai recentă versiune de artefacte undeva, probabil că vă deplasați în direcția greșită, nu am fost nevoiți să văd procese bine stabilite unde era nevoie de LATEST.
dar, în general, nu merită să trageți cele mai recente versiuni ale artefactelor fără grijă, lumea nu este perfectă și oamenii chiar mai mult, bug-urile sunt corectate, dar apar noi și nu merită să adăugați în mod automat bug-urilor la proiect.