Nexus - de ce nu trebuie să utilizați ultima versiune

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ă și îl întoarce. Dacă nu există nici o etichetă, cea mai recentă versiune din listă va fi returnată .

Inițial, acest mecanism funcționează numai pentru că maven-metadata.xml pur și simplu nu există . Versiunile sunt sortate în ordinea adăugării, ultima este returnată. Dar, la un moment dat, se întâmplă ceva între cele două:

Cineva face asta în fișierul meta-fișier.

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ă . Pentru ce - hrean știe, dar creează. Și am observat chiar și în cazul în care Metadata Rebuild pare să nu fi fost făcută, există suspiciuni că acest lucru se întâmplă pentru alte evenimente. Rețineți că versiunile sunt sortate pe baza mecanismelor conectate la Maven. iar aceste mecanisme sunt deja utilizate de Nexus:

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 - este copiat de la maven-metadata.xml. care a fost descărcat de pe Nexus.

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.







Articole similare

Trimiteți-le prietenilor: