Apache Maven

Apache Maven

Tiedot
Kehittäjä Apache-ohjelmistosäätiö
Ensimmäinen versio 13. heinäkuuta 2004
Viimeinen versio 3.8.1 (4. huhtikuuta 2021)
Tallettaa gitbox.apache.org/repos/asf/maven.git
Kirjoitettu Java
Käyttöjärjestelmä Monialustainen
Ympäristö Java-virtuaalikone
Tyyppi Tuotantomoottori
Pakettipäällikkö
Lisenssi Apache-lisenssiversio 2.0
Verkkosivusto maven.apache.org

Apache Maven (kutsutaan yleisesti Maveniksi ) on työkalu hallita ja automatisoida Java- ohjelmistoprojektien tuotantoa yleensä ja erityisesti Java EE : tä. Sitä käytetään jatkuvan integraation automatisointiin ohjelmistokehityksen aikana. Mavenia hallinnoi Apache Software Foundation -organisaatio . Työkalu oli aiemmin Jakarta Project -organisaation haara .

Tavoitteena on tuottaa ohjelmistoja lähteistään, optimoimalla tähän tarkoitukseen tehtävät tehtävät ja varmistamalla oikea tuotantotilaus.

Sitä voidaan verrata tehdä järjestelmän alle Unix tai Ant työkalu .

Maven käyttää Project Object Model (POM) -nimellä tunnettua paradigmaa kuvaamaan ohjelmistoprojektia, sen riippuvuutta ulkoisista moduuleista ja sen valmistuksessa noudatettavaa järjestystä. Siinä on suuri määrä ennalta määritettyjä tehtäviä, kuten Java-koodin kokoaminen tai modulaatio.

Mavenin keskeinen ja suhteellisen spesifinen elementti on sen kyky toimia verkkona. Yksi tämän työkalun historiallisista motiiveista on tarjota keino synkronoida itsenäiset projektit: tietojen standardoitu julkaisu, jar- moduulien automaattinen jakelu . Niin perusversiossa, Maven voi dynaamisesti ladata laitteisto tunnettuja ohjelmiston arkistot . Se tarjoaa siten tarvittavien moduulien avoimen synkronoinnin.

Maven1 ja Maven2 kehitettiin rinnakkain, mutta uudemmat versiot perustuvat toisen version rakenteeseen. Seuraavat artikkelin osat keskittyvät Maven2: een. Mavenin versio 3 julkaistiin8. lokakuuta 2010. Version 2 tuen päättyminen rekisteröitiin18. helmikuuta 2014.

Projektiobjektimalli (POM)

Jokainen projekti tai aliprojekti on konfiguroitu POM: lla, joka sisältää tiedot, jotka Maven tarvitsee projektin käsittelemiseen (projektin nimi, versionumero, riippuvuudet muista projekteista, kokoamiseen tarvittavat kirjastot, avustajien nimet jne.). Tämä POM toteutuu pom.xmlprojektin juuressa olevalla tiedostolla . Tämä lähestymistapa sallii ominaisuuksien perimisen pääprojektista. Jos ominaisuus määritetään uudelleen projektin POM: ssa, se menee päällekkäin pääprojektissa määritetyn kanssa. Tämä esittelee kokoonpanon uudelleenkäytön käsitteen. Pääprojektin pom-tiedosto on nimetty parent pom . Se sisältää yksityiskohtaisen kuvauksen projektistasi, erityisesti tietoja versioinnista ja kokoonpanon hallinnasta, riippuvuuksista, sovellusresursseista, testeistä, tiimin jäsenistä, rakenteesta ja muusta.

Kokoonpano pikemminkin kuin kokoonpano

Maven asettaa puurakenteen ja projektitiedostojen nimeämisen yleissopimuksen käsitteen eikä kokoonpanon mukaan . Nämä käytännöt vähentävät projektien kokoonpanoa, kunhan projekti noudattaa käytäntöjä. Jos projektin täytyy poiketa yleissopimuksesta, kehittäjä määrittää sen projektin kokoonpanossa.

Tässä on tyhjentävä luettelo Maven-projektin hakemistoista:

Elinkaari

Tavoitteet ( tavoitteet Englanti) avaimen elinkaareen Maven hanke ovat:

Ajatuksena on, että minkä tahansa tavoitteen saavuttamiseksi kaikki alkupään tavoitteet tulisi toteuttaa, elleivät ne ole jo onnistuneesti toteutettu eikä projektiin ole tehty muutoksia sen jälkeen. Esimerkiksi kun mvn installjuoksemme, Maven tarkistaa, että se on mvn packagesuoritettu onnistuneesti (purkki on olemassa target/), jolloin sitä ei suoriteta uudelleen.

Muut tavoitteet voidaan suorittaa elinkaaren ulkopuolella, eivätkä ne ole osa Mavenin oletusarvoista elinkaarta (niitä ei vaadita). Tässä ovat tärkeimmät:

Ne voidaan kuitenkin lisätä elinkaareen POM: n kautta.

Riippuvuuden hallinta

Maven-työkalussa riippuvuuksien hallinta perustuu kahteen käsitteeseen:

Transitiivisen suhteen käsite toteutetaan suhteelle "riippuu" ja koko Java-projektille.

Esimerkki: Tarkastellaan kolmea projektia (A, B, C), jos A riippuu B: stä ja B riippuu C: stä, niin A riippuu C: stä.

Oletuksena Mavenissa transitiivisuus määritetään automaattiseksi. Tämä kokoonpano voi luoda rajoituksia suurille projekteille:

Odotettaessa laajennuksen parannusta tämä vaihtoehto voidaan poistaa käytöstä määrittämällä toimitettu vaihtoehto .

Varasto (tai varastot)

Toinen Maven-työkalun panos on sen projektien ja laajennusten järjestäminen. Mavenilla on useita arkistoja useilla tasoilla. Tietovaraston tarkoituksena on saada saataville sekä käytetyt tai suunnitellut käytettävät laajennukset että Mavenin luomat projektit. Voit tietysti asentaa sinne projekteja käyttääksesi niitä (ilman Mavenin luomia). Varastoja on kolme:

Jos haluat luoda yritykselle tietovaraston (tai yleensä yhteisen arkiston), voit käyttää ftp-, scp-, tiedosto- ja http-protokollia.

Huomaa: ftp-protokollalle tarkoitettu laajennus voi aiheuttaa ongelmia, koska sitä ei ole vielä kehitetty.

Jos haluat asentaa purkin arkistoon (ilman että se on maven-projekti), sinun on luotava POM sen kanssa. Muuten Maven yrittää muodostaa yhteyden eri arkistoihin etsimään sitä, mikä on todellista ajanhukkaa, koska purkin ei ole tarkoitus olla läsnä näissä arkistoissa.

Viimeinen tärkeä huomautus: arkistossa on hyvin määritelty ja muuttumaton rakenne (jonka avulla Maven voi löytää tiensä), jossa purkit ja projektit on järjestetty ryhmätunnuksen, artifactId sitten version mukaan.

Joten kun ilmoitus on tehty (riippuvuus tai muu), Maven etsii seuraavasta sijainnista:

{Varaston sijainti} / groupId / artifactId / version

Pakettien nimet ovat seuraavat:

{artifactId} - {versio}. {package}

Ja toisin kuin "target" -hakemistossa, jossa voimme määrittää pakettimme nimen, pakettien nimiä tai rakennetta ei saa muuttaa paketin ja siten "BUILD FAILED" -tunnistamisen rangaistuksesta.

Raportit

Mavenin tuottamat raportit sisältävät:

Laajennukset

Laajennukset mahdollistavat lisäämällä toimintoja. Nämä laajennukset ovat saatavilla Maven-sivustolta tai, jos niin ei ole, niitä voidaan kehittää. Laajennuksen käyttämiseksi sinun tarvitsee vain ilmoittaa se POM: ssä.

Huomaa, että ilmoitus on peritty oletuksena. Ilmoitus tehdään yksinkertaisella tavalla: groupId (jos mitään ei ilmoiteta, se vie oletusarvoisen org.apache.maven), artifactId ja mahdollisesti version (muuten käytetään viimeistä versiota).

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_38<br /> set M2_HOME=C:\dev\maven\apache-maven-3.0.4-bin\apache-maven-3.0.4<br /> set PATH=%JAVA_HOME%/bin;%M2_HOME%/bin;%PATH%<br /> pause call mvn install:install-file -Dfile=solr-webapp-3.4.0.war -DgroupId=org.apache.solr -DartifactId=solr-webapp -Dversion=3.4.0 -Dpackaging=war pause call mvn install:install-file -Dfile=jodconverter-core-3.0-beta-4.jar -DgroupId=org.artofsolving.jodconverter -DartifactId=jodconverter-core -Dversion=3.0-beta-4 -Dpackaging=jar pause call mvn install:install-file -Dfile=parsley-flex4-2.4.1.swc -DgroupId=org.spicefactory -DartifactId=parsley-flex4 -Dversion=2.4.1 -Dpackaging=swc pause call mvn install:install-file -Dfile=spicelib-util-3.0.0.swc -DgroupId=org.spicefactory -DartifactId=spicelib-util -Dversion=3.0.0 -Dpackaging=swc pause call mvn install:install-file -Dfile=spicelib-reflect-3.0.0.swc -DgroupId=org.spicefactory -DartifactId=spicelib-reflect -Dversion=3.0.0 -Dpackaging=swc pause call mvn install:install-file -Dfile=legacy-spicelib-utils-2.5.0.swc -DgroupId=org.spicefactory -DartifactId=legacy-spicelib-utils -Dversion=2.5.0 -Dpackaging=swc pause call mvn install:install-file -Dfile=popup-1.9.swc -DgroupId=com.adobe.cairngorm -DartifactId=popup -Dversion=1.9 -Dpackaging=swc pause call mvn install:install-file -Dfile=popupParsley-1.9.swc -DgroupId=com.adobe.cairngorm -DartifactId=popupParsley -Dversion=1.9 -Dpackaging=swc pause call mvn install:install-file -Dfile=validation-1.13.swc -DgroupId=com.adobe.cairngorm -DartifactId=validation-1.13 -Dversion=1.13 -Dpackaging=swc pause call mvn install:install-file -Dfile=cairngorm-integration-0.11.swc -DgroupId=org.spicefactory -DartifactId=cairngorm-integration -Dversion=0.11 -Dpackaging=swc

Tämän ilmoituksen jälkeen käynnistettäessä tehtävää Maven tarkistaa sen läsnäolon paikallisessa arkistossa. Jos se ei löydä laajennusta, se muodostaa yhteyden keskustietovarastoon sen lataamiseksi. Jos palautus epäonnistuu, suoritus lopetetaan virheilmoituksella (voidaan välttää tämä ja pyytää Mavenia jatkamaan ja antamaan hoidon tulos - virheilmoitusten kanssa lopussa).

Maven ja Eclipse

Eclipse antaa sinun luoda paketteja, mutta ne eivät kunnioita Mavenin rakennetta, eikä niitä asenneta arkistoon. Tämä tarkoittaa, että ilman ulkoista työkalua on välttämätöntä asentaa kaikki luodut paketit manuaalisesti.

Eclipseä varten on saatavana Maven-laajennus, jonka avulla Eclipse voi käyttää Mavenia taustalla ja siten käyttää Eclipseä ja Mavenia yhdessä.

Tämä mahdollistaa Maven-projektien luomisen ja tallentamisen arkistoon.

Sen avulla voidaan riippua erityisesti arkistossa olevista projekteista, joten meidän ei tarvitse tuoda niitä Eclipse-ohjelmassa, kuten nykyisissä työkaluissa. Luokkapolku syntyy Maven.

Sen käytössä on kuitenkin joitain puutteita.

Jos käynnistämme komennon, joka generoi luokan polun 'mvn eclipse: eclipse' vanhemmasta POM: sta, kaikkien moduulien on oltava läsnä työtilassa. Riippuvuus tehdään tämän tilan sisällä, ja jos haluat olla riippuvainen arkistosta, sinun on suoritettava komento jokaiselle moduulille.

Toinen ongelma (tällä hetkellä ilman ratkaisua) liittyy perintöön, kun ei kunnioiteta hakemistojen hierarkiaa.

Huomautukset

Jatkuva integraatio

Tässä on tyhjentävä luettelo jatkuvista integrointimoottoreista , joita voidaan käyttää yhdessä Mavenin kanssa:

Koodin laadun analyysi

Tässä on tyhjentävä luettelo lähdekoodin laadun analysointialustoista, joita voidaan käyttää yhdessä Mavenin kanssa:

Huomautuksia ja viitteitä

  1. Maven Release Notes - Maven 3.8.1  " (katsottu 8. huhtikuuta 2021 )
  2. (en) Apache Maven 3.8.1 julkaistu  " ,4. huhtikuuta 2021(käytetty 8. huhtikuuta 2021 )
  3. “  Maven - Maven Releases History  ”, osoitteessa maven.apache.org (käytetty 10. huhtikuuta 2019 )

Liitteet

Aiheeseen liittyvät artikkelit

Ulkoiset linkit