Apache Maven | |
---|---|
Tyyppi | Rakenna automaatio- ja paketinhallintajärjestelmä |
Kehittäjä | Apache Software Foundation |
Sisään kirjoitettu | Java [3] [4] [5] |
Käyttöjärjestelmä | cross-platform |
Ensimmäinen painos | 1. helmikuuta 2008 [1] |
Laitteistoalusta | Java-virtuaalikone |
uusin versio |
|
Luettavat tiedostomuodot | maven metatiedot [d] |
Luodut tiedostomuodot | maven metatiedot [d] |
Lisenssi | Apache-lisenssi 2.0 |
Verkkosivusto | maven.apache.org _ |
Mediatiedostot Wikimedia Commonsissa |
Apache Maven on kehys projektien kokoamisen automatisoimiseksi perustuen niiden rakenteen kuvaukseen tiedostoissa POM ( Project Object Model ) -kielellä , joka on XML :n osajoukko [6] . Maven-projektin on julkaissut Apache Software Foundation , jossa se on virallisesti osa Jakarta-projektia .
Järjestelmän nimi on jiddishinkielinen sana , jonka merkitys voidaan ilmaista karkeasti sanalla "tiedon kerääjä" [7] .
Maven tarjoaa deklaratiivisen , ei pakollisen (toisin kuin Apache Ant -koontiautomaatiotyökalun ) projektikoonnoksen. Projektin kuvaustiedostot sisältävät projektin tiedot, eivät yksittäisiä suorituskomentoja. Maven hoitaa kaikki teknisissä tiedoissa kuvatut tiedostojen käsittelytehtävät sisäisten ja ulkoisten lisäosien avulla.
Mavenia käytetään Java- , C# -, Ruby- , Scala- ja muilla kielillä kirjoitettujen projektien rakentamiseen ja hallintaan [8] .
Huomattavia vaihtoehtoja ovat Gradle automatisoitu rakennusjärjestelmä , joka on rakennettu Apache Ant ja Mavenin periaatteille, mutta käyttää erikoistunutta Groovy DSL:ää POM-kokoonpanon sijaan.
Mavenin loivat kanadalainen Jason van Zyl ja hänen perustamansa yritys Sonatype . Se alkoi Apache Turbinen aliprojektina vuonna 2002, ja vuonna 2003 Maven hyväksyttiin huipputason Apache-projektiksi, samalla kun sen ensimmäinen versio ilmestyi - Maven 1.x, julkaistu 13. heinäkuuta 2004 versiona 1.0. Tämä tapahtui kuitenkin niin nopeasti, että joitain yksityiskohtia ei mietitty, esimerkiksi liian paljon konfiguraatioita, suorituskykyongelmia.
Siksi konsepti viimeisteltiin ja vuonna 2005 aloitettiin Maven 2.x:n rinnakkaiskehitys, joka toimitettiin versiossa 2.0 19. lokakuuta 2005. [9]
Maven 1.x:ää ei ole kehitetty edelleen, ja se on rajoitettu käyttäjätukeen ja virheenkorjauksiin. [kymmenen]
Maven 3.0:n kehitys alkoi vuonna 2008. Kahdeksan alfajulkaisun jälkeen Maven 3.0:n ensimmäinen beta-versio julkaistiin lokakuussa 2010. Erityistä huomiota on kiinnitetty sen taaksepäin yhteensopivuuteen Maven 2:n kanssa. Useimmissa projekteissa siirtyminen Maven 2:sta Maven 3:een ei vaadi muutoksia [11] .
Maven-kehitys tapahtuu seuraavissa osaprojekteissa:
Apache Mavenin tukeman projektin rakentamiseen tarvittavat tiedot sisältyvät pom.xml -nimiseen XML - tiedostoon . Käynnistyksen yhteydessä Maven tarkistaa, että asetustiedosto sisältää kaikki vaaditut tiedot ja että kaikki tiedot ovat syntaktisesti oikein.
Esimerkki pom.xml- tiedostosta :
<projekti> <!-- malliversio Maven 2.x POM:ille on aina 4.0.0 --> <modelVersion> 4.0.0 </modelVersion> <!-- projektin koordinaatit, eli joukko arvoja, joiden avulla voit yksilöidä tämän projektin --> <groupId> com.mycompany.app </groupId> <artifactId> oma sovellus </artifactId> <version> 1.0 </version> <!-- kirjastoriippuvuudet --> <riippuvuudet> <riippuvuudet> <!-- vaaditun kirjaston koordinaatit --> <groupId> junit </groupId> <artifactId> junit </artifactId> <version> 3.8.1 </version> <!-- tätä kirjastoa käytetään vain testien suorittamiseen ja kääntämiseen --> <scope> testi </scope> </dependency> </dependencies> </project>Vähimmäiskokoonpano sisältää konfigurointitiedoston version, projektin nimen, sen tekijän ja version [12] . Pom.xml :n avulla määritetään riippuvuudet muista projekteista, projektin rakennusprosessin yksittäiset vaiheet (koontiprosessi), luettelo koontimääräyksen toteuttavista laajennuksista [ 12] .
Suuret projektit voidaan jakaa useisiin moduuleihin tai aliprojekteihin, joista jokaisella on oma POM. Moduulien toiminnot voidaan suorittaa yhteisen juuri-POM:n kautta yhdellä komennolla.
Aliprojektin POM-tiedostot voivat periä määritykset muista määritystiedostoista. Samaan aikaan kaikki konfigurointitiedostot peritään oletusarvoisesti "Super POM" -tiedostosta [13] . Super POM tarjoaa oletuskonfiguraation, kuten oletushakemistorakenteen, oletuslaajennukset, sitomisen elinkaarivaiheisiin ja paljon muuta.
Maven tukee käytäntö konfiguraatiolta -periaatetta , joka tarkoittaa, että kyseinen aspekti tarvitsee konfiguroinnin, jos ja vain, jos se ei täytä jotakin spesifikaatiota. Tämän seurauksena tämä vähentää tarvittavan konfiguroinnin määrää menettämättä joustavuutta. Yksi seuraus tästä periaatteesta on, että tiedostopolkuja ei tarvitse erikseen määrittää, mikä yksinkertaistaa pom.xml -tiedoston sisältöä . Kuitenkin lähes kaikki standardit, joihin Maven luottaa, voidaan muuttaa yksilöllisesti [14] [15] .
Maven käyttää Mavenin arkkityyppien periaatetta (eng. Archetypes ). Arkkityyppi on työkalu kuvioista, joista jokainen määritellään kuviolla tai mallilla, analogisesti jonka kanssa johdannaisia luodaan. [16]
Oletushakemistorakenne on yksi Mavenin arkkityyppiperiaatteen toteutuksista. Seuraava rakenne näyttää Java-projektin tärkeimmät hakemistot [17] :
Maven-projektin elinkaari on lista nimetyistä vaiheista, joka määrittää toimintojen järjestyksen sitä rakennettaessa. Mavenin elinkaari sisältää kolme itsenäistä suoritusmääräystä: [18]
Vakioelinkaaria voidaan parantaa toiminnallisuudella Maven-laajennusten avulla. Lisäosien avulla voit lisätä uusia vaiheita vakiojaksoon (esimerkiksi jakelu sovelluspalvelimelle) tai laajentaa olemassa olevia vaiheita.
Maven perustuu laajennusarkkitehtuuriin , jonka avulla voit käyttää laajennuksia erilaisiin tehtäviin ( kääntää , testata, rakentaa, ottaa käyttöön, checkstyle, pmd, scp-siirto ) tietylle projektille ilman, että niitä tarvitsee erikseen asentaa. Tämä on mahdollista, koska tiedot tulevat laajennukseen vakiotulon kautta ja tulokset kirjoitetaan sen vakiolähtöön. Teoriassa tämä mahdollistaa sen, että kuka tahansa voi kirjoittaa laajennuksia ollakseen vuorovaikutuksessa projektin rakennustyökalujen (kääntäjät, testityökalut ja niin edelleen) kanssa mille tahansa muulle kielelle. Todellisuudessa muiden kielten kuin Javan tuki on tällä hetkellä vähäistä. On olemassa laajennus .NET-kehystä varten [19] sekä laajennuksia C / C++ :lle [20] [21] .
Saatavilla olevien liitännäisten määrä on tällä hetkellä erittäin suuri ja sisältää muun muassa laajennuksia, joiden avulla voit suorittaa verkkosovelluksen suoraan Mavenista testataksesi sitä selaimessa; laajennukset, joiden avulla voit testata tai luoda tietopankkeja; laajennuksia, joiden avulla voit luoda verkkopalveluita. Kehittäjän tehtävänä tällaisessa tilanteessa on löytää ja ottaa käyttöön sopivin joukko laajennuksia.
Laajennus saavuttaa useita tavoitteita seuraavalla syntaksilla:
mvn [laajennuksen nimi]:[kohteen nimi]Esimerkiksi Java-projekti voidaan kääntää kääntäjälisäosalla [22] suorittamalla komento mvn compiler:compile.
On Maven-laajennuksia rakentamiseen, testaamiseen, lähteen hallintaan, verkkopalvelimen käyttämiseen, Eclipse - projektitiedostojen luomiseen ja muuhun. [23] Lisäosat on lueteltu ja määritetty pom.xml-<plugins> tiedoston osassa . Jotkin peruslaajennukset sisältyvät oletusarvoisesti jokaiseen projektiin.
Pom.xml - tiedosto määrittää riippuvuudet, jotka Mavenin hallinnoimalla projektilla on. Riippuvuuspäällikkö perustuu useisiin perusperiaatteisiin:
Riippuvuuslaajuus mahdollistaa riippuvuuksien sisällyttämisen vain tietyssä projektin rakentamisvaiheessa. On 6 mahdollista aluetta [27] :
Mavenilla ylläpidetyn projektin on täytettävä tietyt ehdot, jotta se voidaan lukea, jäsentää ja rakentaa. Tämä asettaa rajoituksia hakemistorakenteelle ja vaatii lisävaiheita, jos projektilla on alun perin erilainen rakenne. [28]
Jotta Maven tunnistaa projektin käsiteltäväksi, sen on sisällettävä vakiintunut hakemistorakenne. Kaikkien lähdekooditiedostojen on sijaittava suhteellisessa polussa " \src\main\java " [17] .
Verkkoprojektin määritystiedoston web.xml on sijaittava \src\main\webapp\WEB-INF-hakemistossa [17 ] .
Maven-projektin pom.xml- määritystiedoston on sijaittava projektin juurihakemistossa. Tarkoituksensa mukaan se voi sisältää etävaraston, laajennuksia arkistojen luomiseen, kääntäjälaajennuksen ja niin edelleen. Verkkoprojektiin on myös lisättävä lisäriippuvuuksia, kuten javaee.jar.
Joten ulostuloverkkoprojektin määritystiedosto, joka on yhdenmukainen Mavenin kanssa, näyttää tältä:
<project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http:/ /maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" > <modelVersion> 4.0.0 </modelVersion> <groupId> com.mkyong </groupId> < artifactId> servletdemo </artifactId> <pakkaus> sota </packaging> <versio> 1.0-SNAPSHOT </version> <name> servletdemo </name> <url> http://maven.apache.org </url> <arkistot> <varasto> <id> java.net </id> <url> http://download.java.net/maven/2 </url> </repository> </repositories> <build> <plugins> <plugin> <groupId> org.apache.maven.plugins </groupId> <artifactId> maven-war-plugin </artifactId> <configuration> <webResources> <resource> <directory> ${basedir }/src/main/java </directory> <targetPath> WEB-INF/luokat </targetPath> <includes> <include> **/*.properties </include> <include> **/*.xml </ sisällytä> <include> **/*.css </include> <include> **/*.html </include> </includes> </resource> </webResources> </configuration> </plugin> <plugin > <artifactId> maven-compiler-plugin </artifactId> <configuration> <source> 1.6 </source> <target> 1.6 </target> </configuration> </plugin> </plugins> </build> </ projekti>Kun kaikki yllä olevat vaatimukset on täytetty, Maven-projekti on valmis suorittamaan elinkaaren vaiheita, kuten kokoamisen, arkiston rakentamisen ja dokumentaation luomisen [29] .
Esimerkki viestien tulostelokista komentoa suoritettaessa mvn war:war:
E:\workspace\servletdemo>mvnwar:war [INFO] Etsitään projekteja... ....... [INFO] Käsitellään sotaprojektia [INFO] Kopioidaan verkkosovellusresursseja[E:\workspace\servletdemo] [INFO] Webapp koottu [47 millisekunnissa] [INFO] Rakennussota: E:\workspace\servletdemo\target\servletdemo-1.0-SNAPSHOT.war [TIEDOT]----------------------------------------------- ----- [TIEDOT] RAKENNUS ONNISTUI [TIEDOT]----------------------------------------------- -----Joillekin IDE: ille Maven tarjoaa laajennuksia, joiden avulla voit hallita elinkaarta suorittamalla komentoja IDE-liittymän avulla. Tällaisten kehitysympäristöjen luettelo sisältää Eclipse ( M2eclipse- laajennuksen kautta ), IntelliJ IDEA , NetBeans , JBuilder , JDeveloper (versio 11.1.2), MyEclipse, Emacs [30]
Nämä laajennukset tarjoavat myös mahdollisuuden muokata POM:ia kätevästi tai käyttää POM:ia kuvaamaan täysin projektin riippuvuuksia käyttämäsi IDE:n tarpeisiin.
Sosiaalisissa verkostoissa | |
---|---|
Temaattiset sivustot |
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Huipputason projektit |
| ||||||
Osaprojektit |
| ||||||
Apache Web |
| ||||||
Muut projektit | |||||||
Kehitysprojektit ( hautomo ) |
| ||||||
Käytöstä poistetut projektit ( ullakko ) | |||||||
|
Asennusautomaatiojärjestelmät | |
---|---|