Apache Maven

Apache Maven

Informace
Vyvinul Softwarová nadace Apache
První verze 13. července 2004
Poslední verze 3.8.1 (4. dubna 2021)
Vklad gitbox.apache.org/repos/asf/maven.git
Napsáno Jáva
Operační systém Multiplatformní
životní prostředí Virtuální stroj Java
Typ Správce balíčků produkčního motoru
Licence Licence Apache verze 2.0
webová stránka maven.apache.org

Apache Maven (běžně nazývané Maven ) je nástroj pro správu a automatizaci výroby Java softwarových projektů obecně a Java EE zvlášť. Používá se k automatizaci nepřetržité integrace během vývoje softwaru. Maven je spravován organizací Apache Software Foundation . Tento nástroj byl dříve pobočkou organizace Jakarta Project .

Cílem je výroba softwaru z jeho zdrojů, optimalizace úkolů prováděných za tímto účelem a zajištění správné výrobní zakázky.

Lze jej přirovnat k systému make pod Unixem nebo k nástroji Ant .

Maven používá paradigma známé jako Project Object Model (POM) k popisu softwarového projektu, jeho závislostí na externích modulech a pořadí, které je třeba dodržovat při jeho výrobě. Dodává se s velkým počtem předdefinovaných úkolů, jako je kompilace kódu Java nebo jeho modularizace.

Klíčovým a relativně specifickým prvkem Mavenu je jeho schopnost fungovat jako síť. Jednou z historických motivací tohoto nástroje je poskytnout prostředky pro synchronizaci nezávislých projektů: standardizované zveřejňování informací, automatická distribuce modulů jar . Takže v základní verzi může Maven dynamicky stahovat hardware ze známých softwarových úložišť . Nabízí tak transparentní synchronizaci potřebných modulů.

Maven1 a Maven2 byly vyvinuty paralelně, ale novější verze jsou založeny na struktuře druhé verze. Následující části článku se zaměřují na Maven2. Verze 3 Maven byla vydána dne8. října 2010. Konec podpory pro verzi 2 byl zaregistrován dne18. února 2014.

Objektový model projektu (POM)

Každý projekt nebo dílčí projekt je konfigurován POM, který obsahuje informace, které Maven potřebuje ke zpracování projektu (název projektu, číslo verze, závislosti na jiných projektech, knihovny potřebné pro kompilaci, jména přispěvatelů atd.). Tento POM je materializován souborem pom.xmlv kořenovém adresáři projektu. Tento přístup umožňuje dědičnost vlastností z nadřazeného projektu. Pokud je vlastnost předefinována v projektu POM, překrývá vlastnost definovanou v nadřazeném projektu. Tím se zavádí koncept opětovného použití konfigurace. Soubor pom hlavního projektu má název parent pom . Obsahuje podrobný popis vašeho projektu, zejména informace týkající se správy verzí a správy konfigurace, závislostí, prostředků aplikace, testů, členů týmu, struktury a dalších.

Konvence spíše než konfigurace

Maven ukládá stromovou strukturu a pojmenování souborů projektu podle konceptu úmluvy, nikoli podle konfigurace . Tyto konvence snižují konfiguraci projektů, pokud projekt dodržuje konvence. Pokud se projekt musí odchýlit od konvence, vývojář to určí v konfiguraci projektu.

Zde je neúplný seznam adresářů projektu Maven:

Životní cyklus

Cíle ( anglické cíle ) klíčový životní cyklus projektu Maven jsou:

Myšlenka je, že pro jakýkoli cíl by měly být provedeny všechny předcházející cíle, pokud již nebyly úspěšně provedeny a od té doby nebyly v projektu provedeny žádné změny. Například když spustíme mvn install, Maven zkontroluje, že bylo mvn packageúspěšně dokončeno (v té nádobě existuje target/), v takovém případě to nebude znovu spuštěno.

Jiné cíle lze spustit mimo životní cyklus a nejsou součástí výchozího životního cyklu Mavenu (nejsou povinné). Zde jsou hlavní:

Lze je však přidat do životního cyklu prostřednictvím POM.

Správa závislostí

V nástroji Maven je správa závislostí založena na dvou koncepcích:

Pojem tranzitivní relace je implementován pro relaci „závisí na“ a pro celý projekt Java.

Příklad: Zvažte tři projekty (A, B, C), pokud A závisí na B a B závisí na C, pak A bude záviset na C.

Ve výchozím nastavení v Mavenu je tranzitivita konfigurována jako automatická. Tato konfigurace může generovat omezení u velkých projektů:

Do vylepšení pluginu lze tuto možnost deaktivovat konfigurací poskytované možnosti .

Úložiště (nebo sklady)

Dalším přínosem nástroje Maven je jeho organizace projektů a pluginů. Maven má více úložišť na více úrovních. Účelem úložiště je zpřístupnit jak použité nebo plánované použití pluginů, tak i projekty generované Mavenem. Samozřejmě tam můžete nainstalovat projekty, abyste je mohli používat (aniž by je generoval Maven). Existují tři úložiště:

Chcete-li vytvořit úložiště pro společnost (nebo obecně společné úložiště), můžete použít protokoly ftp, scp, file a http.

Poznámka: Plugin poskytovaný pro protokol ftp může představovat problém, protože ještě není vyvinut.

Chcete-li nainstalovat jar do úložiště (aniž by to byl projekt maven), musíte s ním vygenerovat POM. Jinak se Maven pokouší připojit do různých úložišť, aby ji hledal, a proto je to skutečná ztráta času, protože v těchto úložištích by jar neměla být.

Jedna poslední důležitá poznámka: v úložišti je dobře definovaná a neměnná struktura (která umožňuje Mavenovi najít cestu), kde jsou jary a projekty organizovány podle groupId, artifactId then version.

Jakmile je tedy provedena deklarace (závislost nebo jinak), Maven prohledá následující umístění:

{Repository location} / groupId / artifactId / version

Názvy balíčků jsou následující:

{artifactId} - {verze}. {balíček}

A na rozdíl od adresáře „target“, kde můžeme definovat název našeho balíčku, není dovoleno měnit názvy nebo strukturu balíků pod trestem neuznání balíčku, a tedy „BUILD FAILED“.

Zprávy

Zprávy generované Mavenem zahrnují:

Pluginy

Tyto zásuvné moduly umožňují přidání funkcí. Tyto pluginy jsou k dispozici na webu Maven, nebo, pokud to není možné, mohou být vyvinuty. Chcete-li použít plugin, musíte jej pouze deklarovat v POM.

Všimněte si, že deklarace je standardně zděděna. Deklarace se provádí jednoduchým způsobem: groupId (pokud není deklarován žádný, použije se výchozí org.apache.maven), artifactId a případně verze (jinak se použije poslední verze).

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

Po této deklaraci Maven při spuštění úlohy zkontroluje její přítomnost v místním úložišti. Pokud plugin nemůže najít, připojí se k centrálnímu úložišti a stáhne si jej. V případě selhání zotavení jeden ukončí provádění chybovou zprávou (tomu se lze vyhnout a požádat Mavena, aby pokračoval a na konci poskytl výsledek léčby - s chybovými zprávami).

Maven a Eclipse

Eclipse umožňuje generovat balíčky, ale ty nerespektují strukturu Maven a nejsou nainstalovány ani v úložišti. To znamená, že bez použití externího nástroje je nutné ručně nainstalovat všechny vygenerované balíčky.

K dispozici je plugin Maven pro Eclipse, který umožňuje Eclipse používat Maven na pozadí, a proto používat Eclipse a Maven společně.

To umožňuje generovat a ukládat projekty Maven v úložišti.

Umožňuje zejména záviset na projektech, které jsou v úložišti, a proto je nemusíme importovat pod Eclipse, jako je tomu u stávajících nástrojů. Cesta ke třídě je generován Maven.

Jeho použití má však určité nedostatky.

Pokud spustíme příkaz, který generuje cestu ke třídě 'mvn eclipse: eclipse' z nadřazeného POM, musí být v pracovním prostoru všechny moduly. Závislost se vytváří uvnitř tohoto prostoru a pro získání závislosti z úložiště musíte spustit příkaz pro každý modul.

Další problém (aktuálně bez řešení) se týká dědičnosti, když člověk nerespektuje hierarchii v adresářích.

Poznámky

Kontinuální integrace

Zde je neúplný seznam modulů pro nepřetržitou integraci , které lze použít ve spojení s Maven:

Analýza kvality kódu

Zde je neúplný seznam platforem pro analýzu kvality zdrojového kódu, které lze použít ve spojení s Maven:

Poznámky a odkazy

  1. „  Poznámky k verzi Maven - Maven 3.8.1  “ (přístup k 8. dubnu 2021 )
  2. (en) „  Vydáno Apache Maven 3.8.1  “ ,4. dubna 2021(zpřístupněno 8. dubna 2021 )
  3. „  Maven - Maven Releases History,  “ na adrese maven.apache.org (přístup 10. dubna 2019 )

Dodatky

Související články

externí odkazy