Seznamte se s Apache Mavenem

20. 4. 2021 Azure, Programming

Apache Maven je nástroj pro automatizaci buildů využívaný hlavně v projektech, ve kterých se objevují programovací jazyky, které jsou schopny běžet na Java Virtual Machine (JVM). Kromě automatizace buildů se obvykle používá i jako nástroj pro automatický dependency management.

Architektura Mavenu

Samotná architektura služby Apache Maven je založena na tzv. Maven Repozitářích. Maven Repozitář je defacto lokace, kde jsou uloženy artefakty.

Poznámka: Artefakt je soubor, nejčastěji ve formátu JAR (Java Archive), který byl nahrán do kteréhokoliv Maven Repozitáře a stal se tak součástí ekosystému.

Typy Maven Repozitářů

Existují 3 typy Apache Maven Repozitářů: lokální, centrální a vzdálený. Všechny tři jsou v dnešní době naprosto běžný při vývoji v programovacím jazyce Java, zejména ve frameworku Spring. Mobilní aplikace napsané v Javě nejčastěji používají buildovací nástroj Gradle, protože struktura projektů Java EE/Spring se výrazně liší od struktury mobilních aplikací napsaných v Javě a podle vývojářů mobilních aplikací nebyl Maven tak flexibilní nástroj.

Lokální repozitář je místo na pevném disku počítače, na kterém Maven používáme, obvykle ve formátu <user.home>/.m2/. V mém případě cesta vypadá takto: C:\Users\honzi\.m2. Tady najdeme všechny tzv. knihovny, které jsme si kdy stáhli. Jo, všechno je to tady.

Centrální repozitář je veřejně dostupný a obvykle spravovaný komunitou používající nástroj Maven. Mezi nejznámější a nejpoužívanější patří Maven Central. Firma Oracle má například svůj vlastní Maven repozitář a svoje knihovny poskytuje skrze něj.

Vzdálený repozitář je ve své podstatě podobný repozitáři centrálnímu až na to, že tyto repozitáře jsou obvykle spravované korporátními společnostmi, které ho využívají ke sdílení interních knihoven.

Získávání závislostí (Dependency management)

Dependency Management, do kterého se bude pouštět normální uživatel, je vcelku jednoduchý a místy až stereotypní. Pro začátek si musíme ujasnit verzování Apache Maven Artefaktů. Jednotlivé hotové nezkušební verze se označují čísly, např: 1.5.3 tedy 1 – major release, 2- minor release, 3 – patch. Nehotové verze používají pro označení svého stavu keyword SNAPSHOT. Teď, když už rozumíme označení verzí, se můžeme posunout dále.

Řekněme, že máme projekt v Mavenu a potřebujeme nějakou knihovnu. Po upravení xml souboru pom.xml, ve kterém jsou uloženy všechny tagy popisující závislosti, se Maven podívá, jestli tuto knihovnu a příslušnou verzi této knihovny máme uloženou v lokálním repozitáři. Pokud ano, vyřešeno, pokud ne, Maven se po knihovně podívá v centrálním repozitáři a uloží danou knihovnu do lokálního repozitáře. Pokud má knihovna verzi, která označuje, že knihovna je připravena do produkčního nasazení, nic se už neděje. Pokud má knihovna jakoukoliv verzi SNAPSHOT, Maven se bude v určitých intervalech koukat do centrálního repozitáře, jestli už neexistuje production ready verze této SNAPSHOT verze.

Maven POM

POM je zkratka pro Project Object Model, tedy projektový model závislostí. Je to XML soubor, který slouží k deskripci Maven projektů. Může dědit z rodičovského projektového modelu závislosti, ale to si ukážeme příště. Ještě existuje jedna verze POM nazývaná Effective POM. Effective POM je xml soubor, ve kterém jsou popsány všechny závislosti celého projektu, tedy i závislosti zděděné rodičovským POM.

schéma Maven pom.xml
Maven POM | Zdroj: java2s.com

Maven Dependencies

Maven Dependency, tedy závislost, je soubor formátu JAR, na kterém je váš projekt závislý.

Dependency Scope

Využití závislosti můžeme limitovat pomocí tzv. dependency scope. Testovací knihovny obvykle budou mít scope test, limitujeme tedy jejich scope na využití pouze v testovacím adresáři a nikde jinde. Dalšími možnostmi vlastnosti scope jsou: compile, provided a runtime.

Compile scope se používá v defaultním nastavení, není ho tedy nutné specifikovat. Závislost s dependency scopem compile bude dostupná v celé aplikaci.

Runtime scope znamená, že knihovna mající tento dependency scope není nutná ke kompilaci, ale je nutná ke spuštění programu.

Provided scope se podobá compile scopu, ale indikuje, že očekáváme od JDK, nebo od web kontejneru, doplnění této závislosti.

pozitiva a negativa dependency scope
Dependency Scope | Zdroj: stackoverflow.com

Maven Bill Of Materials

Bill of materials je převzatý pojem z výrobního prostředí. Jedná se o něco jako soupis ingrediencí potřebných k vyrobení nějakého pokrmu. Maven BOM tento princip převzal a aplikuje ho ve správě závislostí. Pomocí Maven BOM můžeme definovat běžné závislosti a jejich verze, vlastnosti, pluginy a konfigurace pluginů a buildovací profily. Aplikuje se hlavně v mikroservisních architekturách, kde není možno definovat jediný pom.xml soubor, který by se staral o vše tak, jak to bývá u monolitických aplikací. Pomocí Maven BOM můžeme docílit jednotné konfigurace napříč mikroservisy.

Závěr

V tomto článku jsme vám přiblížili co je Apache Maven a jeho základní teorii. V příštím článku si ukážeme praktické ukázky.

Nastavení souborů Cookies

1. Co jsou soubory cookies

Soubory cookies jsou krátké textové soubory, které internetová stránka odešle do vašeho prohlížeče. Umožňují internetové stránce zaznamenat informace o vaší návštěvě, například zvolený jazyk a podobně. Následující návštěva stránek tak pro vás může být snazší a příjemnější. Soubory cookies jsou důležité, neboť bez nich by procházení sítě Internet bylo mnohem složitější. Soubory cookies umožňují lepší využití naší internetové stránky a přizpůsobení jejího obsahu vašim potřebám. Soubory cookies používá téměř každá internetová stránka na světě.

2. Druhy souborů cookies

Relační (tedy dočasné) soubory cookies nám umožňují propojovat vaše jednotlivé aktivity po dobu prohlížení těchto internetových stránek. V okamžiku otevření okna vašeho prohlížeče se tyto soubory vytvoří a po zavření okna vašeho prohlížeče se odstraní.

Trvalé soubory cookies nám pomáhají váš počítač identifikovat, jestliže opětovně navštívíte naši internetovou stránku.

3. Využívání souborů cookies

V souladu s ustanovením § 89 odst. 3 zák. č. 127/2005 Sb., o elektronických komunikacích, v účinném znění, si vás tímto dovolujeme informovat, že naše internetové stránky využívají pro svoji činnost soubory cookies, tedy vaše soubory cookies, včetně trvalých, zpracováváme.

Internetové prohlížeče obvykle obsahují správu souborů cookies. V rámci nastavení vašeho prohlížeče tak pravděpodobně můžete jednotlivé soubory cookies ručně mazat, blokovat či zcela zakázat jejich používání. Pro více informací použijte nápovědu vašeho internetového prohlížeče. Jsou-li cookies povoleny, lze toto nastavení internetového prohlížeče považovat za souhlas se zpracováním osobních údajů.

4. Účel použití souborů cookies

K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookies. Informace o tom, jak náš web používáte, sdílíme se svými partnery působícími v oblasti sociálních médií, inzerce a analýz. Používáním internetových stránek vyjadřujete souhlas propojením následujících služeb: Google Analytics, Google Tag Manager, Facebook Pixel, Microsoft Clarity.

Soubory cookies využíváme, kromě účelu uvedeného v předchozím odstavci, pouze pro měření návštěvnosti webové stránky.

5. Správce osobních údajů

Provozovatelem webové stránky studuj.digital a správcem osobních údajů je společnost: pg-sec s.r.o., sídlem Rybná 716/24, Staré Město, 110 00 Praha 1, identifikační číslo 09580905, zapsaná v obchodním rejstříku Městského soudu v Praze, oddíl C, vložka 338028.

​6. Zásady ochrany osobních údajů

Podrobnější informace o souborech cookies a zpracování tvých osobních údajů najdete v našich Zásadách ochrany osobních údajů.

Nezbytné

Tyto soubory cookie jsou nutné pro základní funkce stránky, a jsou proto vždy povolené. Mezi ně patří soubory cookie, které stránce umožňují si vás zapamatovat při procházení stránky v rámci jedné relace nebo, pokud o ně požádáte, mezi relacemi.

Volitelné

Výkon

Tyto soubory cookie nám pomáhají vylepšovat funkce stránek sledováním využití této webové stránky. V některých případech zrychlují zpracování vašeho požadavku a umožňují nám zapamatovat si vaše vybrané předvolby na stránce. Pokud soubory cookie zakážete, může se tím zhoršit přesnost našich doporučení a zpomalit funkčnost stránek.

Sociální média a relamy

Díky souborům cookies sociálních médií si můžete připojit ke svým sociálním sítím a prostřednictvím sociálních médií sdílet obsah z naší webové stránky. Reklamní soubory cookie (třetích stran) shromažďují informace pro lepší přizpůsobení reklamy tvým zájmům, a to na webových stránkách studuj.digital i mimo ně. V některých případech tyto soubory cookies zpracovávají vaše osobní údaje. Pokud chcete získat více informací o zpracování osobních údajů, přečtěte si naše Zásady ochrany osobních údajů. Pokud zakážete soubory cookies, mohou se zobrazovat reklamy, které méně souvisejí s vašimi zájmy, nebo nebudete moci účinně používat odkazy na Facebook, Instagram či jiné sociální sítě anebo nebudete moci sdílet obsah na sociálnch médiích.