Cum se utilizează maven pentru a lucra cu biblioteci care nu sunt în maven

În acest articol, vă voi arăta cum să conectați o bibliotecă care nu are o implicită în maven și cum să conectați o altă bibliotecă ale cărei surse au fost pierdute de mult timp.







Voi descrie, de asemenea, cum să realizați un proiect care generează un artefact care face parte din bibliotecă și cum să conectați această bibliotecă la un alt proiect propriu.

Cum se utilizează maven pentru a lucra cu biblioteci care nu sunt în maven

În articolul meu anterior sa spus că maven însuși descarcă toate dependențele specificate în pom.xml. Dar ce se va întâmpla dacă nu găsește nici o dependență? În acest caz, maven va spune că dependența nu este detectată și va întrerupe procesul de construire cu o eroare. Ce să facem în acest caz?

Această întrebare, de fapt, este împărțită în mai multe întrebări, fiecare dintre acestea fiind abordate individual. Alegerea soluției este determinată de cea în care se află această dependență.

Dependența poate fi pe internet într-un anumit loc, a cărui existență nu-l cunoaște. Acesta poate fi de asemenea sub forma unui fișier de borcan pe mâinile dvs. și, în final, sub forma unui cod sursă, proiectat ca un proiect maven.

Vom vorbi despre aceste trei cazuri.

Dar mai întâi trebuie să clarificăm pe scurt o întrebare.

Unde maven leagă bibliotecile

Ce se întâmplă dacă biblioteca nu există în mod implicit în spațiul de stocare la distanță, dar se află într-un alt depozit la distanță

Prima problemă și probabil cea mai frecventă apare dacă nu există nici o bibliotecă în acest depozit implicit sau dacă depozitul de pe mașina pe care se construiește ansamblul nu este disponibil, de exemplu, din motive de securitate.

Cum se specifică maven pentru un proiect în care să se caute un depozit suplimentar

Apoi, am conectat depozitul de proiect de primăvară, în care puteți găsi cele mai recente versiuni ale acestei familii de biblioteci. Iată cum arată în interiorul pom.xml

Acum, atunci când maven nu găsește dependența din depozit în mod implicit sau nu constată că nu este disponibil, nu va intra în panică, ci va căuta biblioteca într-un alt depozit și, dacă totul merge conform planului, găsiți-l acolo.

Dar se întâmplă că nu există biblioteci în depozite. De exemplu, dacă este un driver pentru MSSQL sau dacă este o bibliotecă de proprietate pe care ați achiziționat recent pentru o mulțime de bani.

Cum se conectează o bibliotecă care nu are depozite

Puteți conecta o astfel de bibliotecă în mai multe moduri. De exemplu, dacă aveți un depozit propriu în rețeaua locală, puteți (și câteodată chiar trebuie să) puneți biblioteca acolo, reducând astfel sarcina la cea anterioară.

Dar, dacă este posibil, este mai bine să puneți o astfel de bibliotecă în proiect și să o stocați direct în sistemul de control al versiunilor. Apoi, biblioteca va fi disponibilă programului mereu și pe orice mașină, iar pasul copierii acestei biblioteci în depozit nu este inclus în manual.

Pentru a rezolva astfel de cazuri, maven are și un mecanism regulat. Tocmai am aflat cum să specificăm maven un depozit la distanță, altul decât implicit. Deci, nu trebuie să utilizați un depozit la distanță. Puteți face un depozit în sistemul de fișiere local, puneți biblioteca acolo și instruiți-l pe maven să caute dependențe chiar și acolo.

Cum să creați depozitul local

Pentru aceasta, după cum sa menționat mai sus, maven are un instrument de personal.

Să presupunem că avem o bibliotecă care se află într-un fișier jar numit hello-world-library-1.0-SNAPSHOT.jar. Despre biblioteca, știm că există o clasă HelloWorld în ea, care include o metodă statică spunând, tastând în consola, așa cum este ușor de ghicit, Hello World.







Vrem să creăm un director lib în directorul de proiect, în care va fi localizat depozitul nostru suplimentar și să plasăm biblioteca acolo. Pentru a face acest lucru, este suficient să executați următoarea comandă în directorul de proiect.

Dacă utilizați sistemul de operare Windows, trebuie să îl înlocuiți cu ^, adică să scrieți

Sau puteți să eliminați și să scrieți o comandă într-o singură linie.

Fiți atenți, ca și pentru orice alt artefact, pentru bibliotecă trebuie să vină cu grupul, artifact și versiune. Apoi le vom direcționa la pom.xml atunci când conectăm dependența.

În interiorul directorului, care creează comanda, există un depozit complet, pentru care este suficient să specificați maven, unde este localizat. Toate informațiile despre bibliotecile care pot fi găsite acolo sunt conținute direct în structura de directoare a repozitorului nou creat. Pentru utilizarea ulterioară a repozitorului, de exemplu, pe alte mașini, comanda de implementare a fișierului nu trebuie executată.

Pentru a lăsa proiectul să știe că depozitul există și pentru a arăta unde este, puteți deja să descoperiți calea, deși cu un amendament la faptul că depozitul este local.

Acordați atenție liniei a cincea

Se spune că trebuie să căutați în repozitoriu în directorul de proiect, care este indicat de proiectul built.basedir variabil construit.

Clasa care folosește biblioteca va fi extrem de simplă, dar pentru ordinea codului său.

Rămâne să adaugi dependența pom.xml și poți colecta proiectul.

Directorul lib ar trebui să fie zakomitit, iar biblioteca va fi disponibilă proiectului în orice moment.

Cu toate acestea, o regulă ar trebui să fie amintită.

Trebuie să actualizați numărul versiunii bibliotecii în repozitoriul local ori de câte ori modificați fișierul de jar

Maven tratează depozitele ca fiind externe, deci dacă nu modificați numărul versiunii, atunci maven nu va folosi versiunea bibliotecii din directorul lib, ci cea care a fost stocată în cache pe mașina locală. În acest caz special, acest lucru nu ar trebui să joace un rol din cauza sufixului SNAPSHOT, dar trebuie să știți despre el.

Există un alt scenariu comun. Aveți propria dvs. bibliotecă, pe care o compilați cu maven și apoi conectați-vă la un alt proiect maven.

Cum se face biblioteca dvs. de java

Pentru a face o bibliotecă, este suficient să scrieți o clasă cu publicul modificator. Apoi puteți folosi această clasă în codul în care este atașată biblioteca.

Aici, de exemplu, o clasă.

Acum trebuie să faceți un proiect care să compileze biblioteca care conține această clasă.

Așa cum ne amintim, din punctul de vedere al mavenului, biblioteca este doar un artefact, așa că pomelul va arăta trivial.

Deci, avem o clasă cu o metodă statică, avem o descriere a artefactului pentru maven. Rămâne doar să compilați acest cod pentru a obține o bibliotecă, adică un fișier de borcan.

Doar scrie în consolă:

Apoi, un fișier cu numele va apărea în directorul țintă. -.borcan. în cazul nostru specific - hello-world-library-1.0-SNAPSHOT.jar. care este biblioteca ta.

Cum se conectează o bibliotecă nou creată la proiectul tău maven

Pentru ca biblioteca să poată fi conectată la un alt proiect, trebuie să scrieți instalarea în loc de pachet.

Acest lucru va trebui făcut după fiecare modificare a codului bibliotecii și pe fiecare computer pe care dorim să folosim această bibliotecă.

Acum poți face un nou proiect care va folosi biblioteca.

În interiorul proiectului va exista o clasă care folosește metoda statică din bibliotecă pentru a spune Hello world. Am văzut deja această clasă.

Să verificăm încă o dată:

Funcționează nu mai rău decât versiunea anterioară!

Ce se întâmplă dacă biblioteca folosește o altă bibliotecă?

Întrebarea, se pare, este proastă, dar doar în cazul în care vom efectua un experiment.

Să facem o bibliotecă cu dependențe non-goale.

și scrie un cod pentru el

Acum o vom asambla

Să trecem la director cu proiectul nostru, care folosește această bibliotecă și încearcă să-l colecteze și să o execute.

Cum funcționează

Strict vorbind, știi cum este aranjamentul în interiorul, nu neapărat, dar totuși foarte util.

Comanda mvn install va colecta biblioteca și apoi va fi pusă în repozitoriul local în mod implicit. Asta este, în același loc în care toate bibliotecile pe care le-ați conectat vreodată la proiectele maven sunt, cu excepția, desigur, cele care se află în depozitele locale, făcute personal de dumneavoastră.

Apoi, atunci când construim un proiect care folosește această bibliotecă, maven îl va căuta în repozitoriul local, îl găsește și îl va conecta.

  • Maven caută biblioteci în repozitoriul implicit la distanță.
  • Pentru a conecta o bibliotecă care nu se află în magazia implicită, puteți specifica depozite suplimentare de la distanță, apoi maven va căuta și bibliotecile în ele.
  • Dacă nu există o bibliotecă în niciun depozit la distanță, puteți crea un depozit local folosind mecanismul nativ maven și adăugați-l la pom.xml.
  • Când actualizați depozitul, care se află în codul sursă al proiectului, trebuie să modificați întotdeauna versiunea bibliotecii, altfel pot apărea probleme confuze.
  • Dacă aveți un proiect maven, puteți face o bibliotecă din acesta folosind comanda pachetului mvn.
  • Cu comanda mvn install, puteți pune biblioteca în magazia locală în mod implicit.
  • Pentru a utiliza o bibliotecă într-un alt proiect, este suficient să o specificați ca o dependență în pom.xml.






Articole similare

Trimiteți-le prietenilor: