Automatizační a vývojové nástroje jsou rozhodně jedním z nejdůležitějších aspektů projektu a v tomto blogu chceme diskutovat o Mavenu. Maven je výkonný automatizační nástroj pro projekty Java. Zjednodušuje proces sestavení a vytváří jednotnou strukturu pro projekty. Usnadňuje tedy správu a pochopení projektů. Tento blog pokrývá téměř vše ve světě Maven a zahrnuje širokou škálu příkazů a možností, které zefektivní váš vývojový pracovní postup. Prozkoumáme různé aspekty, jako je správa serverů a kontejnerů, správa řízení zdrojů (SCM) a GPG pro podepisování artefaktů. Kromě toho se podíváme na specializované příkazy pro správu zásuvných modulů, montáž a distribuci a generování projektových webů a zpráv. Takže na konci této příručky tomu budete dokonale rozumět Maven příkazy a možnosti.
Přehled Maven; Životní cyklus projektu
V jazyce jidiš slovo Maven znamená „akumulátor znalostí“. Tento význam do značné míry vysvětluje sílu Mavenu jako automatizačního nástroje pro projekty Java. Maven velmi zjednodušuje proces sestavení a správu projektů. A dělá to automatizací různých úkolů a poskytováním jednotného systému sestavování.
Nyní, abychom měli jasnou představu o tom, jak Maven funguje, rozeberme koncept a Projektový objektový model (POM). POM je soubor XML, který obsahuje informace o projektu a podrobnosti o konfiguraci. Maven používá POM jako základ své práce. Maven tedy přebírá závislosti projektu, adresář sestavení, zdrojový adresář, testovací zdrojový adresář a cíle z tohoto zdroje, aby fungoval.
Po definování projektu a jeho závislostí od pom.xml, kdykoli spustíte příkaz Maven, přečte soubor pom, aby provedl konkrétní fázi sestavení tohoto příkazu. Životní cyklus projektu je dlouhý od okamžiku vytvoření projektu až po jeho skutečné nasazení. Tento životní cyklus definuje posloupnost fází, kterými by měl váš projekt projít. Každá fáze představuje fázi životního cyklu a provádí specifické úkoly, jako je kompilace zdrojového kódu, spuštění testů a zabalení kódu do distribuovatelného formátu. To vše dělá z životního cyklu Mavenova projektu důležitý koncept, kterému je třeba porozumět. Pojďme se tedy blíže podívat na fáze životního cyklu Mavena:
- Ověřit: Tato fáze ověřuje správnost projektu a jsou k dispozici všechny potřebné informace.
- Kompilovat: V této fázi se zkompiluje zdrojový kód projektu.
- Test: Tato fáze testuje zkompilovaný zdrojový kód pomocí vhodného rámce pro testování jednotek.
- Balík: Tato fáze zabalí zkompilovaný kód do jeho distribuovatelného formátu (např. JAR, WAR).
- Instalovat: Ve fázi instalace se balíček nainstaluje do místního úložiště a bude dostupný pro další projekty na stejném počítači.
- Nasadit: Tato fáze zkopíruje konečný balíček do vzdáleného úložiště pro sdílení s dalšími vývojáři a projekty.
Každá z těchto fází má odpovídající příkaz mvn, kterému se budeme věnovat v nadcházejících částech našeho mavenského cheatsheetu. Toto budou nejdůležitější příkazy, které lze použít pro správu procesu sestavení vašeho projektu.
Správa závislostí
Jednou ze základních funkcí Maven je správa závislostí. Tato funkce je pro výkon Maven tak významná, protože usnadňuje manipulaci se závislostmi projektu.
Jak Maven spravuje závislosti
Maven používá centralizované úložiště, známé jako Centrální úložiště Maven, kde je hostováno velké množství knihoven a pluginů. Když projekt vyžaduje závislost, Maven automaticky stáhne požadované knihovny z centrálního úložiště a uloží je do místního úložiště. Toto místní úložiště je mezipaměť na vašem místním počítači, která zkracuje dobu stahování pro budoucí sestavení.
Závislosti v Maven jsou specifikovány v pom.xml soubor pod <závislosti> sekce. Každá závislost je definována sadou souřadnic: groupId, ArtifactIda verze.
Rozsahy závislostí
Při práci s Maven můžete určit rozsah závislostí. Tento faktor definuje viditelnost cesty třídy a fázi životního cyklu závislosti. Takže můžete vědět, která fáze vyžaduje tuto závislost. Běžné rozsahy jsou:
- Kompilovat: Toto je výchozí rozsah a používá se, když není zadán žádný rozsah. Závislosti s tímto rozsahem jsou dostupné ve všech fázích sestavení a jsou součástí konečného balíčku.
- Pokud: Očekáváme, že závislosti s tímto rozsahem budou připraveny v běhovém prostředí. Používají se při kompilaci, ale nejsou součástí konečného balení.
- Doba běhu: Tyto závislosti nejsou potřebné pro kompilaci, ale jsou vyžadovány během provádění. Jsou zahrnuty v runtime classpath.
- Test: Tyto závislosti jsou potřebné pouze pro kompilaci a spouštění testů. Nejsou součástí runtime ani finálního balíčku.
- Systém: Rozsah systému je podobný poskytnutému rozsahu, ale musíte poskytnout JAR, který Maven použije. JAR musí být přítomen v systémové cestě.
Tranzitivní závislosti
Jednou z výkonných funkcí Maven je, že dokáže zvládnout tranzitivní závislosti. Když projekt deklaruje závislost, Maven automaticky zahrne nejen tuto závislost, ale také její závislosti, závislosti jejich závislostí a tak dále. Tento řetězec závislostí je známý jako tranzitivní závislosti. Aby bylo vše jasné, představte si, že váš projekt závisí na spring-boot-starter-web, nyní bude Maven zahrnovat také všechny knihovny, na kterých závisí spring-boot-starter-web, jako je Spring Core, Spring MVC a Jackson.
Nyní, když víte o teorii, jak Maven spravuje závislosti, pojďme se podívat, jak s ní pracovat v praxi:
mvn dependency:resolve
Tento příkaz dokáže vyřešit a zobrazit všechny závislosti požadované pro váš projekt. Můžete jej použít k tomu, abyste viděli, na kterých knihovnách váš projekt závisí, a ujistěte se, že je vše v pořádku.
mvn dependency:tree
Pomocí tohoto příkazu můžete mít stromovou strukturu závislostí vašeho projektu. Ukazuje, jak spolu jednotlivé závislosti souvisí, a pomáhá s identifikací potenciálních konfliktů.
mvn dependency:analyze
Tento příkaz analyzuje závislosti vašeho projektu, aby našel všechny nepoužívané artefakty. Pomůže vám to vyčistit váš projekt a vyhnout se zbytečnému nadýmání.
Funkce správy závislostí Maven usnadňují váš vývojový proces. Pomáhají vám také vyhnout se běžným nástrahám a udržovat čistou a organizovanou strukturu projektu.
Provedení
Provádění v Maven zahrnuje provádění konkrétních úkolů nebo cílů v rámci projektu. Tyto úlohy mohou sahat od spouštění programů Java až po spouštění externích skriptů nebo příkazů. Maven poskytuje výkonné pluginy, které tyto popravy usnadňují. Toto je další funkce Maven, díky které je skvělým nástrojem pro automatizaci různých částí vašeho pracovního postupu projektu. Podívejme se tedy na klíčové spouštěcí příkazy maven:
mvn exec:java
Tento příkaz se používá ke spuštění třídy Java ve vašem projektu. Je to užitečné pro spouštění hlavních tříd nebo testování samostatných Java programů, aniž byste je nejprve zabalili.
mvn exec:exec
Tento příkaz vám umožňuje spustit jakýkoli externí program nebo skript z prostředí Maven. Můžete jej použít pro spouštění skriptů shellu, externích nástrojů nebo jiných programů, které jsou součástí vašeho procesu sestavení.
Prováděcí příkazy v Maven vám pomohou při automatizaci opakujících se úloh. Můžete je také použít k integraci externích nástrojů a skriptů do životního cyklu sestavení Maven. Celkově vám tedy mohou pomoci spravovat vaše úkoly mnohem efektivněji.
Správa serverů a kontejnerů
Správa serverů a kontejnerů je důležitou fází vývoje a nasazení webových aplikací. Maven tento proces usnadňuje pomocí výkonných pluginů, které vám umožňují spouštět, nasazovat a spravovat webové aplikace na různých serverech a kontejnerech přímo z vašeho procesu sestavování. Zde jsou některé základní příkazy Maven pro správu serverů a kontejnerů:
mvn tomcat7:run
Tento příkaz spustí vaši webovou aplikaci pomocí Apache Tomcat. Je to užitečné pro místní vývoj a testování a umožňuje vám rychle nasadit a otestovat vaši webovou aplikaci bez nastavení úplného serverového prostředí.
mvn jetty:run
Tento příkaz spustí vaši webovou aplikaci pomocí oblíbeného webového serveru s názvem Molo. Stejně jako Tomcat je Jetty skvělý pro vývoj a testování díky svým lehkým a rychlým možnostem nasazení.
Jak funguje správa serverů a kontejnerů
Maven používá pluginy jako tomcat7-maven-plugin a jetty-maven-plugin ke správě provozu serveru. Tyto pluginy vám umožňují spouštět, zastavovat a konfigurovat servery jako součást životního cyklu vašeho sestavení. Vývoj a testování webových aplikací v konzistentním prostředí se tak stává mnohem jednodušší. Použití profilů Maven k definování konfigurací serveru pro různá prostředí vám pomůže spravovat různá nastavení pro vývoj, testování a produkci. Tato funkce Maven vám také umožňuje konfigurovat protokolování a monitorování v rámci vašich serverových pluginů. Můžete tak sledovat aktivity serveru a rychle řešit problémy.
SCM (Source Control Management)
Důležitým aspektem každého vývojového projektu je Source Control Management (SCM). Vývojové týmy potřebují SCM ke správě změn ve zdrojovém kódu v průběhu času. Maven má sadu příkazů pro interakci se systémy SCM, jako je Git, Subversion a další. Tyto příkazy dokážou automatizovat různé úlohy, jako je například přihlašování kódu, odhlašování kódu a aktualizace verzí projektu. Zde jsou některé z klíčových příkazů Maven SCM a jejich možnosti:
mvn scm:checkin
Tento příkaz mvn můžete použít ke kontrole změn projektu v SCM. Tento příkaz pomáhá automatizovat proces potvrzování změn v úložišti ovládacích prvků zdroje. Nejnovější aktualizace jsou tedy určitě uloženy a sdíleny s týmem.
mvn scm:checkout
Tento příkaz maven se používá ke kontrole kódu projektu z úložiště SCM a je užitečný pro získání místní kopie projektu. Takže máte vždy jistotu, že pracujete s nejnovější verzí zdrojového kódu.
mvn scm:update
Tento příkaz mvn aktualizuje místní pracovní kopii projektu nejnovějšími změnami z úložiště SCM. Úkolem tohoto příkazu je zajistit, aby vaše místní kódová základna byla synchronizována s úložištěm a zahrnovala všechny nové změny provedené ostatními členy týmu.
mvn scm:status
Tento příkaz mvn zobrazuje stav místní pracovní kopie ve vztahu k úložišti SCM. Jinými slovy, informuje vás o všech změnách, které byly provedeny lokálně, ale dosud nebyly uloženy do úložiště.
mvn scm:tag
Tento příkaz se používá k vytvoření tagu v úložišti SCM. Tagy označují konkrétní body v historii projektu, jako jsou vydání nebo významné milníky.
Příkazy Maven SCM mohou výrazně zefektivnit proces správy zdrojového kódu vašeho projektu. Pochopení a používání těchto příkazů zvýší vaši efektivitu a spolupráci v rámci vašeho vývojového týmu.
GPG (GNU Privacy Guard)
GNU Privacy Guard (GPG) je kryptografický software, který uživatelům umožňuje šifrovat a podepisovat data a komunikaci. V kontextu Maven se GPG používá k podepisování artefaktů, aby se zajistila jejich pravost a integrita. To je důležité, když nasazujete artefakty do veřejných úložišť, protože to uživatelům umožňuje ověřit, že s artefakty nebylo manipulováno. Maven poskytuje několik příkazů pro práci s GPG a usnadňuje proces podepisování a nasazení artefaktů vašeho projektu. Podívejme se na některé z těchto příkazů jako příklady:
mvn gpg:sign
Tento příkaz maven můžete použít k podepsání artefaktů projektu pomocí GPG. Podepisování artefaktů zajišťuje, že je mohou ověřit ostatní, a poskytuje vrstvu zabezpečení a důvěry. Tento příkaz se často používá během procesu sestavení k podepsání dokumentů JAR, WAR a dalších typů artefaktů před nasazením.
mvn gpg:sign-and-deploy-file
Tento příkaz mvn kombinuje podepsání a nasazení souboru do jediného kroku. Můžete jej použít, když chcete podepsat artefakt a okamžitě jej nasadit do úložiště. To zefektivní váš proces a zajistí, že chcete podepsat artefakt a okamžitě jej nasadit do úložiště.
Začlenění přihlašování GPG do vašeho procesu sestavování Maven může zvýšit bezpečnost a spolehlivost vašeho softwaru. Pro uživatele je tedy snazší důvěřovat a ověřovat vaše artefakty.
Správa vydání
Správa vydání je při vývoji softwaru tak důležitá. Díky efektivní správě vydání se můžete ujistit, že verze softwaru jsou správně spravovány, zabaleny a nasazeny. Maven poskytuje sadu příkazů pro automatizaci a zefektivnění procesu uvolňování. Podívejme se na některé příklady možností a příkazů maven pro správu vydání:
mvn release:prepare
Tento příkaz mvn se používá k přípravě projektu pro vydání. Provádí úkoly, jako je kontrola, že neexistují žádné nepotvrzené změny, aktualizace čísel verzí v pom.xml soubory, označení vydání v systému správy řízení zdrojů (SCM) a aktualizaci souboru pom.xml soubory do další vývojové verze. Zajišťuje, že projekt je ve stabilním stavu a připraven k vydání.
mvn release:perform
Tento příkaz provede skutečný proces uvolnění. Zkontroluje projekt z SCM na značce vytvořené pomocí vydání:připravit příkaz, sestaví projekt a nasadí artefakty do určeného úložiště. Tento příkaz zajišťuje, že artefakty jsou sestaveny z přesného stavu kódu v době přípravy vydání.
mvn release:clean
Tento příkaz mvn odstraní všechny záložní soubory deskriptoru vydání, které byly vytvořeny během vydání:připravit proces. Vyčistí prostředí a zajistí, že nezůstanou žádné zbytky souborů z předchozích pokusů o vydání. Tento příkaz vám poskytne čistý pracovní prostor a zabrání potenciálním problémům v dalších vydáních.
Použití příkazů správy vydání zjednodušuje procesy vydání, zlepšuje kvalitu softwaru a zajišťuje efektivní správu verzí.
Archetyp
Pokud jste vývojář, který chce vytvářet struktury projektů na základě předdefinovaných šablon, měli byste zvážit použití pluginu Maven Archetype. Zde probereme primární příkazy Maven spojené s archetypy.
mvn archetype:generate
Tento příkaz mvn můžete použít k vytvoření nového projektu z existující šablony nebo „archetypu“. Tento příkaz provede uživatele výběrem archetypu a konfigurací nového projektu. Pomůže vám tedy nastavit dobře strukturovaný projekt.
mvn archetype:catalog
Tento příkaz uvádí dostupné archetypy, které lze použít ke generování nových projektů. Je to užitečné pro prozkoumání různých šablon poskytovaných komunitou Maven a určení, který archetyp nejlépe vyhovuje potřebám vašeho projektu.
Pomocí těchto dvou příkazů maven můžete rychle začít nový projekt. Ať už spouštíte jednoduchou Java aplikaci nebo komplexní podnikový projekt, archetypy Maven poskytují cenný výchozí bod.
Správa pluginů
Zásuvné moduly Maven umožňují vývojářům rozšířit funkčnost Maven a automatizovat různé úkoly v rámci životního cyklu sestavení. Efektivní správa zásuvných modulů zajišťuje, že váš projekt zůstane udržovatelný a sestavení budou reprodukovatelná. Tato část se bude zabývat základními příkazy pro správu zásuvných modulů Maven.
mvn plugin:download
Tento příkaz se používá ke stažení konkrétního pluginu Maven z úložiště. Můžete jej použít, když se chcete ujistit, že konkrétní plugin je k dispozici ve vašem místním úložišti před spuštěním dalších příkazů Maven, které na něm závisí.
mvn plugin:help
Tento příkaz maven zobrazuje podrobné informace a dokumentaci o konkrétním pluginu Maven. Můžete jej použít, když potřebujete pochopit různé cíle, parametry a konfigurace dostupné pro plugin.
Tyto příkazy pro správu zásuvných modulů Maven vylepšují proces sestavování, automatizují pracovní postupy a udržují vysoké standardy kvality a konzistence projektu.
Montáž a distribuce
Funkce sestavování a distribuce Maven umožňuje vývojářům zabalit své projekty do různých formátů pro distribuci. Můžete je použít k vytvoření spustitelných souborů JAR, přidružených aplikací nebo vlastních distribucí, které zahrnují závislosti a další prostředky. Zde se budeme zabývat klíčovými příkazy Maven pro montáž a distribuci.
mvn assembly:assembly
Tento příkaz vytvoří sestavu pro projekt. Sestavení je distribuovatelný balíček, který může obsahovat binární soubory, zdrojový kód, závislosti a další zdroje. Tento příkaz používá modul Assembly Plugin ke generování těchto balíčků na základě poskytnutého deskriptoru sestavení.
mvn assembly:directory
Tento příkaz mvn vytvoří adresářovou strukturu sestavení, aniž by ve skutečnosti vytvořil soubor archivu. Tento příkaz je užitečný pro testování a ověřování obsahu a struktury sestavy před jejím zabalením.
Naučit se používat Mavenovy montážní a distribuční příkazy vám může hodně pomoci při balení a distribuci vašich aplikací.
Příkazy pro generování stránek
Příkazy webu Maven jsou skvělým způsobem, jak dokumentovat projekty. Tyto příkazy vytvářejí komplexní dokumentační weby pro vaše projekty. Zde pokryjeme základní příkazy webu a jejich funkce:
mvn site
Příkaz mvn site generuje dokumentaci webu projektu a obsahuje informace o projektu, jako je souhrn projektu, sestavy závislostí, použití pluginu a další.
mvn site:deploy
Tento příkaz můžete použít k nasazení vygenerovaného webu na vzdálený server. To je užitečné pro zpřístupnění dokumentace širšímu publiku, jako jsou členové týmu nebo veřejnost.
mvn site:stage
Tento příkaz uvádí web do místního adresáře. Tento příkaz můžete použít k místnímu náhledu webu před jeho nasazením na vzdálený server.
Úhledná a uspořádaná dokumentace je při vývoji projektu tak důležitá. Příkaz maven site vám umožňuje mít vše na svém místě a mít lepší komunikaci v rámci vývojových týmů.
Příkazy WAR & JAR
Jako vývojář určitě víte, že schopnost zabalit vaše aplikace do různých formátů je v procesu vývoje tak důležitá. Maven vám umožňuje zabalit Java aplikace do různých formátů, včetně souborů WAR (Web Application Archive) a JAR (Java Archive). Důležitost těchto formátů balení je zřejmá, když chcete nasadit aplikace na servery a distribuovat knihovny. Zde pokryjeme klíčové příkazy mvn pro generování souborů WAR a JAR:
mvn war:war
Tento příkaz zkompiluje váš projekt a zabalí jej do souboru WAR. Když spustíte tento příkaz, Maven vygeneruje soubor WAR v cílovém adresáři vašeho projektu.
mvn jar:jar
Tento příkaz zkompiluje váš projekt a zabalí jej do souboru JAR v cílovém adresáři vašeho projektu.
Tyto dva příkazy vám pomohou při nasazení a distribuci. Můžete je tedy používat k efektivní správě a distribuci vašich Java aplikací.
Hlášení
Jakýkoli softwarový projekt potřebuje podrobné zprávy pro sledování pokroku. A Maven má výkonné pluginy a příkazy mvn pro generování různých typů zpráv. Tato část pokrývá dva zásuvné moduly Maven, které můžete použít pro hlášení: Surefire a JaCoCo.
Plugin Surefire
Tento plugin můžete použít pro spouštění testů jednotek v projektu Maven. Generuje podrobné zprávy o testech, které byly provedeny, takže si můžete být jisti, že se kód chová tak, jak očekáváte.
mvn surefire-report:report
Tento příkaz vygeneruje zprávu o testu jednotky ve formátu, který je snadno čitelný a analyzovatelný. Pomocí tohoto příkazu Maven vytvoří HTML zprávu v cíl/stránka adresář vašeho projektu. Tato zpráva obsahuje informace o počtu spuštěných, úspěšných a neúspěšných testů spolu s podrobným trasováním zásobníku pro případná selhání.
Plugin JaCoCo
Tento plugin můžete použít pro měření a vykazování pokrytí kódu jednotkovými testy. Můžete se tedy ujistit, že vaše testy pokrývají základnu kódu.
mvn jacoco:report
Pokud chcete vidět, které části kódu byly testovány a které ne, tento příkaz vám poskytne zprávu o pokrytí kódu. Sestava, kterou tento příkaz vytvoří, je sestava HTML v cíl/stránka/jacoco adresář, který zobrazuje podrobné metriky pokrytí pro třídy, metody a řádky kódu.
Tyto dva pluginy vám pomohou sledovat výsledky testů a pokrytí kódu a poskytují užitečné informace o stavu a kvalitě vaší kódové základny.
Sestavení přizpůsobení
Maven vám umožňuje přizpůsobit sestavení tak, aby splňovalo specifické požadavky vašeho projektu. V této části se budeme zabývat tím, jak používat profily Maven a definice vlastností pro přizpůsobení sestavení.
Profily Maven
Pomocí profilů Maven můžete pro svůj projekt definovat různé konfigurace, které lze aktivovat na základě různých faktorů, jako jsou vlastnosti systému, proměnné prostředí nebo vlastní podmínky. To znamená, že můžete přizpůsobit proces sestavení pro různá prostředí, jako je vývoj, testování a produkce. Profily můžete definovat ve svém pom.xml soubor pod <profily> sekce. A -p volba následovaná ID profilu vám profil aktivuje.
Definice vlastností
Vlastnosti Maven vám umožňují definovat hodnoty, které lze znovu použít v celém vašem pom.xml soubor. Tyto vlastnosti mohou být specifikovány v pom.xml, prostřednictvím příkazového řádku nebo v externích souborech vlastností. Vlastnosti můžete definovat v souboru <vlastnosti> část vašeho pom.xml. Po jejich definování můžete tyto vlastnosti používat v celém pom.xml soubor.
Přizpůsobení procesu sestavování v Maven vám může pomoci přizpůsobit váš projekt různým prostředím a požadavkům. Pomocí profilů můžete přepínat mezi různými nastaveními sestavení a pomocí vlastností můžete opakovaně používat a efektivně spravovat hodnoty.
Závěr
Tento blog poskytl komplexní úvod do Maven a provedl vás každým krokem procesu vývoje Java aplikace. Jako výkonný automatizační nástroj pro Java projekty má maven různé příkazy a schopnosti pro každou fázi vývoje a znalost, jak s těmito příkazy pracovat a být nad nimi, mění kvalitu vašeho vývojového procesu k lepšímu.
FAQ
Na co se přípravek Maven používá?
Maven je nástroj pro automatizaci sestavování a řízení projektů pro projekty Java. Zjednodušuje proces sestavení, spravuje závislosti projektu a poskytuje standardizovanou strukturu projektu. Maven také podporuje projektovou dokumentaci, reporting a distribuci.
Co je POM v Mavenu?
Maven je nástroj, který automatizuje proces sestavování a správu závislostí pro projekty Java. POM (Project Object Model) je soubor XML v Maven, který obsahuje informace o projektu a podrobnosti o konfiguraci používané Mavenem k sestavení projektu. Soubor POM definuje závislosti projektu, pluginy, cíle a další konfigurace sestavení.