Installer lokal krukke med Maven

1. Problemet og alternativene

Maven er et veldig allsidig verktøy og dets tilgjengelige offentlige arkiver er uten sidestykke. Imidlertid vil det alltid være en gjenstand som er enten ikke vert noe sted, eller depotet der det er vert, er risikabelt å være avhengig av, da det kanskje ikke er opp når du trenger det.

Når det skjer, er det noen få valg:

  • bite i kulen og installere en fullverdig depotadministrasjon løsning som Nexus
  • prøv å få gjenstanden lastet opp i et av mer anerkjente offentlige arkiver
  • installer artefakten lokalt ved hjelp av et maven-plugin

Nexus er selvfølgelig den mer modne løsningen, men det er også jo mer sammensatt. Å sørge for en forekomst for å kjøre Nexus, sette opp Nexus selv, konfigurere og vedlikeholde den kan være overkill for et så enkelt problem som å bruke en enkelt krukke. Hvis dette scenariet - som er vert for egendefinerte gjenstander - er vanlig, gir en depotleder imidlertid mye mening.

Få gjenstanden lastet opp i et offentlig depot eller i Maven sentral direkte er også en god løsning, men vanligvis en langvarig løsning. I tillegg kan det hende at biblioteket ikke er Maven aktivert i det hele tatt, noe som gjør prosessen mye vanskeligere, så det er ikke en realistisk løsning for å kunne bruke artefakten NÅ.

Det etterlater det tredje alternativet - å legge til gjenstanden i kildekontrollen og bruke et maven-plugin - i dette tilfellet maven-install-plugin til installer den lokalt før byggeprosessen trenger det. Dette er uten tvil det enkleste og mest pålitelige alternativet som er tilgjengelig.

2. Installer lokal krukke med maven-install-plugin

La oss starte med den fullstendige konfigurasjonen som er nødvendig for å installere artefakten i vårt lokale depot:

 org.apache.maven.plugins maven-install-plugin 2.5.1 org.somegroup someartifact 1.0 jar $ {basedir} /dependencies/someartifact-1.0.jar true install-jar-lib install-file validate 

La oss nå bryte ned og analysere detaljene i denne konfigurasjonen.

2.1. Artefaktinformasjonen

Artefaktinformasjonen er definert som en del av element. Den faktiske syntaksen er veldig lik å erklære avhengighet - a groupId, artefaktId og versjon elementer.

Neste del av konfigurasjonen krever å definere emballasje av artefakten - dette er spesifisert som krukke.

Deretter må vi gi plassering av den faktiske jar-filen som skal installeres - dette kan være en absolutt filbane, eller den kan være relativ ved hjelp av eiendommer tilgjengelig i Maven. I dette tilfellet $ {basedir} eiendom representerer roten til prosjektet, nemlig stedet der pom.xml Filen eksisterer. Dette betyr at someartifact-1.0.jar filen må plasseres i en / avhengigheter / katalog under roten.

Til slutt er det flere andre valgfrie detaljer som også kan konfigureres.

2.2. Henrettelsen

Utførelsen av installasjonsfil mål er bundet til validere fase fra standard Maven-byggesyklus. Før du prøver å kompilere, må du kjøre valideringsfasen eksplisitt:

mvn validere

Etter dette trinnet vil standardkompilering fungere:

mvn ren installasjon

Når kompileringsfasen har utført, er vår someartifact-1.0.jar er riktig installert i vårt lokale depot, akkurat som alle andre gjenstander som kan ha blitt hentet fra selve Maven sentralen.

2.3. Generere en POM vs Levering av POM

Spørsmålet om vi trenger å levere en pom.xml filen for artefakten eller ikke, avhenger hovedsakelig av kjøretidsavhengighet av selve artefakten. Enkelt sagt, hvis gjenstanden har avhengighet av kjøretid på andre krukker, må disse glassene være til stede på klassestien ved kjøretid også. Med en enkel gjenstand som ikke burde være et problem, da den sannsynligvis ikke vil ha noen avhengigheter ved kjøretid (et blad i avhengighetsgrafen).

De generere Pom alternativet i installasjonsfil mål bør være tilstrekkelig for denne typen gjenstander:

ekte

Imidlertid, hvis gjenstanden er mer kompleks og har ikke-triviell avhengigheter, hvis disse avhengighetene ikke allerede er i klassestien, må de legges til. En måte å gjøre det på er å definere disse nye avhengighetene manuelt i pom-filen til prosjektet. En bedre løsning er å tilby en tilpasset pom.xml fil sammen med den installerte gjenstanden:

falske $ {basedir} /avhengigheter/someartifact-1.0.pom

Dette vil gjøre det mulig for Maven å løse alle avhengigheter av artefakten som er definert i denne skikken pom.xml, uten å måtte definere dem manuelt i hovedpom-filen til prosjektet.

3. Konklusjon

Denne artikkelen går over hvordan du bruker en krukke som ikke er vert noe sted i et Maven-prosjekt ved å installere den lokalt med maven-install-plugin.


$config[zx-auto] not found$config[zx-overlay] not found