Ako vytvoriť doplnok Maven

1. Úvod

Maven ponúka širokú škálu doplnkov, ktoré nám pomáhajú pri zostavovaní nášho projektu. Môžeme sa však stretnúť s prípadmi, keď tieto doplnky nestačia a musíme si vyvinúť vlastné.

Našťastie Maven poskytuje niekoľko užitočných nástrojov, ktoré nám v tomto procese pomôžu.

V tomto tutoriáli budeme celkom praktickí a ukážeme si, ako vytvoriť plugin Maven od nuly.

Ukážeme si tiež, ako ju použiť v našich projektoch a ako k nej vytvoriť dokumentáciu.

2. Vytvorenie doplnku

Počas tohto tutoriálu vyvinieme doplnok s názvom counter-maven-plugin ktorý spočíta počet závislostí, ktoré projekt obsahuje. Je veľmi dôležité dodržiavať konvenciu pomenovania doplnkov, ktorú odporúča Maven keď vyberieme názov nášho doplnku.

Teraz, keď vieme, čo budeme vyvíjať, je potrebné vytvoriť projekt Maven. V pom.xml definujeme groupId, artifactId a verzia nášho pluginu:

 4.0.0 com.baeldung counter-maven-plugin maven-plugin 0.0.1-SNAPSHOT counter-maven-plugin Maven Mojo //maven.apache.org 1,8 1,8 

Všimnite si, že sme nastavili obal na maven-plugin.

V tomto prípade sme projekt vytvorili manuálne, ale mohli by sme to urobiť aj pomocou maven-archetype-mojo:

archív typu mvn: generate -DgroupId = com.baeldung -DartifactId = counter-maven-plugin -Dversion = 0.0.1-SNAPSHOT -DarchetypeGroupId = org.apache.maven.archetypes -DarchetypeArtifactId = maven-archetype-mojo

Pritom by sme mali aktualizovať predvolené verzie závislostí tak, aby používali najnovšie verzie.

3. Vytvorenie Mojo

Teraz je čas vytvoriť naše prvé mojo. Mojo je trieda Java, ktorá predstavuje cieľ, ktorý náš plugin vykoná. Plugin obsahuje jedno alebo viac mojos.

Náš mojo bude zodpovedný za spočítanie počtu závislostí projektu.

3.1. Pridávanie závislostí

Pred vytvorením Mojo musíme do nášho pridať nejaké závislosti pom.xml:

  org.apache.maven maven-plugin-api 3.6.3 org.apache.maven.plugin-tools maven-plugin-anotácie 3.6.0 poskytované org.apache.maven maven-projekt 2.2.1 

The maven-plugin-api je vyžadovaná závislosť, ktorá obsahuje triedy a rozhrania potrebné na vytvorenie nášho Mojo. The anotácie maven-plugin Závislosť sa hodí používať anotácie na našich hodinách. The maven-projekt Závislosť nám umožňuje prístup k informáciám o projekte, do ktorého vkladáme doplnok.

3.2. Vytvára sa trieda Mojo

Teraz sme pripravení vytvoriť naše mojo!

Mojo musí implementovať Mojo rozhranie. V našom prípade predĺžime z AbstractMojo takže budeme musieť iba implementovať vykonať metóda:

@Mojo (name = "counter-dependency", defaultPhase = LifecyclePhase.COMPILE) verejná trieda DependencyCounterMojo rozširuje AbstractMojo {// ...}

Ako vidíme, počítadlo závislostí je názov cieľa. Na druhej strane sme ho pripojili k zostaviť fáza je predvolene nastavená, takže pri použití tohto cieľa nebudeme nevyhnutne musieť určiť fázu.

Pre prístup k informáciám o projekte musíme pridať a MavenProject ako parameter:

@Parameter (defaultValue = "$ {project}", required = true, readonly = true) projekt MavenProject;

Tento objekt bude Maven vložený pri vytváraní kontextu.

V tomto okamihu sme schopní implementovať metódu execute a spočítať počet závislostí projektu:

public void execute () hodí MojoExecutionException, MojoFailureException {List dependencies = project.getDependencies (); long numDependencies = dependencies.stream (). count (); getLog (). info ("Počet závislostí:" + numDependencies); }

The getLog () metóda poskytuje prístup k protokolu Maven. The AbstractMojo už spracováva svoj životný cyklus.

3.3. Pridávanie parametrov

Parameter, ktorý sme pridali predtým, je iba na čítanie a používateľ ho nemôže nakonfigurovať. Injektuje ho aj Maven, aby sme mohli povedať, že je to niečo zvláštne.

V tejto časti pridáme parameter, v ktorom môžu používatelia určiť rozsah závislostí, ktoré chceme počítať.

Preto vytvorme a rozsah parameter v našom mojo:

@Parameter (property = "scope") Rozsah reťazca;

Nastavili sme iba nehnuteľnosť atribút. Umožňuje nám nastaviť túto vlastnosť pomocou príkazového riadku alebo a pom nehnuteľnosť. Pokiaľ ide o ostatné atribúty, predvolené hodnoty sú v poriadku.

Teraz upravíme naše vykonať metóda na použitie tohto parametra a filtrovanie závislostí pri počítaní:

public void execute () hodí MojoExecutionException, MojoFailureException Zoznam závislostí = project.getDependencies (); long numDependencies = dependencies.stream () .filter (d -> (scope == null 

Pokročilejšie typy parametrov sú vysvetlené v oficiálnej dokumentácii.

4. Testovanie doplnku

S vývojom doplnku sme hotoví. Vyskúšajme to, či to funguje!

Najskôr musíme nainštalovať doplnok do nášho lokálneho úložiska:

mvn čistá inštalácia

V ďalších častiach si najskôr ukážeme, ako spustiť náš doplnok z príkazového riadku. Potom sa tiež dozvieme, ako sa to používa v projekte Maven.

4.1. Vykonávame náš doplnok

Cieľ doplnku môžeme spustiť v príkazovom riadku zadaním jeho úplného názvu:

mvn groupId: artifactId: version: goal

V našom prípade to vyzerá takto:

mvn com.baeldung: counter-maven-plugin: 0.0.1-SNAPSHOT: závislosť-counter

Avšak ak sme postupovali podľa konvencie pomenovania doplnkov, ktorú sme spomenuli na začiatku tohto tutoriálu, Maven vyrieši predponu nášho pluginu a môžeme príkaz skrátiť:

počítadlo mvn: počítadlo závislostí

Všimnite si, že tento príkaz používa najnovšiu verziu doplnku. Majte tiež na pamäti, že musíme pridať svoje groupId do skupiny pluginov nášho nastavenia.xml takže Maven tiež vyhľadáva v tejto skupine:

 com.baeldung 

Ak skontrolujeme výstup príkazu, môžeme vidieť, že plugin spočítal počet závislostí v pom.xml nášho pluginu:

[INFO] Skenovanie projektov ... [INFO] [INFO] ----------------------------------- [INFO] Vytváranie doplnkov proti Maven Mojave 0.0.1-SNAPSHOT [INFO] ---------------------------- [Maven- plugin] ---------------------------- [INFO] [INFO] --- counter-maven-plugin: 0.0.1-SNAPSHOT : counter-dependency (default-cli) @ counter-maven-plugin --- [INFO] Počet závislostí: 3 [INFO] --------------------- -------------------------------------------------- - [INFO] STAVEBNÝ ÚSPECH [INFO] ----------------------------------------- ------------------------------- [INFO] Celkový čas: 0,529 s [INFO] Dokončené o: 30.11.2019 : 43: 41 + 01: 00 [INFO] --------------------------------------- ---------------------------------

Môžeme tiež nastaviť rozsah parameter cez vlastnosti príkazového riadku:

mvn counter: dependency-counter -Dscope = test

Všimnite si, že rozsah meno je názov, ktorý sme definovali v nehnuteľnosť atribút nášho parametra v mojo.

4.2. Používanie nášho doplnku v projekte

Vyskúšajme teraz náš doplnok tak, že ho použijeme v projekte!

Chystáme sa vytvoriť veľmi jednoduchý projekt Maven s určitými závislosťami, ktoré bude náš plugin počítať:

 4.0.0 com.baeldung príklad pom 0.0.1-SNAPSHOT org.apache.commons commons-lang3 3.9 junit junit 4.12 test 

Posledná vec je pridať náš doplnok k zostaveniu. Musíme si výslovne stanoviť, že chceme prevádzkovať počítadlo závislostí cieľ:

   com.baeldung counter-maven-plugin 0.0.1-SNAPSHOT test závislosti-counter 

Všimnite si, že sme špecifikovali rozsah parameter v konfigurácia uzol. Tiež sme nešpecifikovali žiadnu fázu, pretože naše mojo je pripojené k zostaviť fáza štandardne.

Teraz stačí spustiť program zostaviť fáza vykonania nášho pluginu:

mvn čistý kompilát

A náš doplnok vytlačí počet súborov test závislosti:

[INFO] Skenovanie projektov ... [INFO] [INFO] ----------------------------------- ------------- [INFO] Príklad stavby 0.0.1-SNAPSHOT [INFO] ------------------------ -------- [pom] --------------------------------- [INFO] [INFO] --- maven-clean-plugin: 2.5: clean (default-clean) @ príklad --- [INFO] [INFO] --- counter-maven-plugin: 0.0.1-SNAPSHOT: závislosť-counter (predvolené) @ príklad --- [INFO] Počet závislostí: 1 [INFO] ----------------------------------- ------------------------------------- [INFO] STAVEBNÝ ÚSPECH [INFO] ----- -------------------------------------------------- ----------------- [INFO] Celkový čas: 0,627 s [INFO] Dokončené o: 2019-11-25T18: 57: 22 + 01: 00 [INFO] --- -------------------------------------------------- -------------------

V tomto výučbe sa nezaoberáme tým, ako písať testy jednotiek alebo integrácie pre náš plugin, ale Maven poskytuje niektoré mechanizmy, ako to urobiť.

5. Pridanie dokumentácie

Keď vytvárame doplnok Maven, je dôležité vygenerovať dokumentáciu, aby ju ostatní ľudia mohli ľahko používať.

Stručne sa budeme zaoberať tým, ako vygenerovať túto dokumentáciu pomocou maven-plugin-plugin.

maven-plugin-plugin je už súčasťou projektu, ale aktualizujeme ho tak, aby používal najnovšiu verziu.

Rovnako urobíme to isté maven-site-plugin:

    org.apache.maven.plugins maven-plugin-plugin 3.6.0 org.apache.maven.plugins maven-site-plugin 3.8.2 

Potom sa musíme uistiť, že sme pridali javadoc k nášmu Mojo a tiež pridať nejaké metadáta do súboru pom.xml doplnku:

 Baeldung //www.baeldung.com/ 

Potom musíme do našej sekcie pridať sekciu prehľadov pom.xml:

   správa org.apache.maven.plugins správa maven-plugin-plugin 

Nakoniec vygenerujeme dokumentáciu pomocou príkazu maven site:

stránka mvn

Vo vnútri cieľového priečinka nájdeme a stránky adresár so všetkými vygenerovanými súbormi HTML. The plugin-info.html je ten, ktorý obsahuje dokumentáciu k pluginu:

Viac možností, ktoré môžete pridať do našej dokumentácie, nájdete v sprievodcovi dokumentáciou k doplnku Maven.

6. Záver

V tomto tutoriáli sme si ukázali, ako vytvoriť doplnok Maven. Najprv sme implementovali jednoduchý plugin, ktorý nám pomohol vidieť typickú štruktúru projektu pluginu Maven. Potom sme prebrali niektoré z nástrojov, ktoré poskytuje Maven, ktorý nám pomáha vyvíjať doplnky.

Snažili sme sa to zjednodušiť, aby bolo všetko jasnejšie, ale zároveň sme poskytli niekoľko užitočných odkazov s potrebnými informáciami o tom, ako vytvoriť výkonnejší doplnok.

Úplný zdrojový kód príkladov je ako vždy k dispozícii na serveri GitHub.


$config[zx-auto] not found$config[zx-overlay] not found