Kako stvoriti dodatak Maven

1. Uvod

Maven nudi veliku raznolikost dodataka koji će nam pomoći u izradi našeg projekta. Međutim, možemo pronaći slučajeve kada ti dodaci nisu dovoljni i moramo razviti vlastiti.

Srećom, Maven nudi nekoliko korisnih alata koji će nam pomoći u ovom procesu.

U ovom uputstvu bit ćemo vrlo praktični i pokazat ćemo korak po korak kako stvoriti dodatak Maven od nule.

Također ćemo pokazati kako ga koristiti u našim projektima i kako stvoriti dokumentaciju za to.

2. Izrada dodatka

Tijekom ovog vodiča razvit ćemo dodatak pod nazivom dodatak za counter-maven koji će računati broj ovisnosti koje projekt sadrži. Vrlo je važno slijediti konvenciju o imenovanju dodataka koju preporučuje Maven kada odaberemo naziv za naš dodatak.

Sad kad znamo što ćemo razvijati, sljedeća stvar koju trebamo učiniti je stvoriti Maven projekt. U pom.xml mi ćemo definirati groupId, artefaktId i verzija našeg dodatka:

 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 

Primijetite da smo postavili pakiranje maven-dodatak.

U ovom smo slučaju projekt stvorili ručno, ali mogli bismo to učiniti i pomoću maven-arhetip-mojo:

mvn arhetip: generiraj -DgroupId = com.baeldung -DartifactId = counter-maven-plugin -Dversion = 0.0.1-SNAPSHOT -DarchetypeGroupId = org.apache.maven.archetypes -DarchetypeArtifactId = maven-archetype-mojo

Kada to radimo, trebali bismo ažurirati zadane verzije ovisnosti kako bismo koristili najnovije.

3. Stvaranje Mojoa

Sad je vrijeme da stvorimo svoj prvi mojo. Mojo je Java klasa koja predstavlja cilj koji će izvršiti naš dodatak. Dodatak sadrži jedan ili više mojo-a.

Naš će mojo biti odgovoran za brojanje broja ovisnosti projekta.

3.1. Dodavanje ovisnosti

Prije stvaranja mojoa, moramo dodati neke ovisnosti u naše pom.xml:

  org.apache.maven maven-plugin-api 3.6.3 org.apache.maven.plugin-tools maven-plugin-annotations 3.6.0 pod uvjetom da org.apache.maven maven-project 2.2.1 

The maven-plugin-api ovisnost je potrebna i sadrži potrebne klase i sučelja za stvaranje našeg mojoa. The maven-plugin-annotations ovisnost dobro dođe za upotrebu bilješki u našim razredima. The maven-projekt ovisnost omogućuje nam pristup informacijama o projektu u koji uključujemo dodatak.

3.2. Stvaranje Mojo klase

Sada smo spremni stvoriti svoj mojo!

Mojo mora implementirati Mojo sučelje. U našem ćemo slučaju produžiti od SažetakMojo pa ćemo morati samo implementirati izvršiti metoda:

@Mojo (name = "dependency-counter", defaultPhase = LifecyclePhase.COMPILE) javna klasa DependencyCounterMojo proširuje AbstractMojo {// ...}

Kao što vidimo, brojač ovisnosti je naziv cilja. S druge strane, pridružili smo ga sastaviti faza prema zadanim postavkama, pa nećemo nužno morati navesti fazu kada koristimo ovaj cilj.

Da bismo imali pristup projektnim informacijama, moramo dodati a MavenProject kao parametar:

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

Maven će ovaj objekt ubrizgati kad se stvori kontekst.

U ovom smo trenutku u mogućnosti implementirati izvršnu metodu i izbrojiti broj ovisnosti projekta:

javna praznina execute () baca MojoExecutionException, MojoFailureException {Popis ovisnosti = project.getDependencies (); long numDependencies = dependencies.stream (). count (); getLog (). info ("Broj ovisnosti:" + numDependencies); }

The getLog () metoda omogućuje pristup Mavenovom dnevniku. The SažetakMojo već upravlja svojim životnim ciklusom.

3.3. Dodavanje parametara

Parametar koji smo prije dodali samo je za čitanje i korisnik ga ne može konfigurirati. Također, ubrizgava ga Maven, pa bismo mogli reći da je nekako poseban.

U ovom ćemo odjeljku dodati parametar gdje korisnici mogu odrediti opseg ovisnosti koje želimo brojati.

Stoga, stvorimo a opseg parametar u našem mojo:

@Parameter (svojstvo = "doseg") Niz opsega;

Mi smo postavili samo imovine atribut. Omogućuje nam postavljanje ovog svojstva putem naredbenog retka ili a pom imovine. Za ostale atribute slažemo se sa zadanim vrijednostima.

Sada ćemo izmijeniti naš izvršiti metoda za korištenje ovog parametra i filtriranje ovisnosti prilikom brojanja:

javna praznina execute () baca MojoExecutionException, MojoFailureException List zavisnosti = project.getDependencies (); long numDependencies = dependencies.stream () .filter (d -> (doseg == null 

Naprednije vrste parametara objašnjene su u službenoj dokumentaciji.

4. Testiranje dodatka

Završili smo s razvojem dodatka. Isprobajmo ga da vidimo radi li!

Prije svega, dodatak moramo instalirati u naše lokalno spremište:

mvn čista instalacija

U sljedećim odjeljcima prvo ćemo vidjeti kako pokrenuti naš dodatak iz naredbenog retka. Zatim ćemo također objasniti kako ga koristiti u projektu Maven.

4.1. Izvršavanje našeg dodatka

Cilj dodatka možemo pokrenuti u naredbenom retku navodeći njegovo potpuno kvalificirano ime:

mvn groupId: artefaktId: verzija: cilj

U našem slučaju to izgleda ovako:

mvn com.baeldung: dodatak counter-maven: 0.0.1-SNAPSHOT: brojač ovisnosti

Međutim, ako smo slijedili konvenciju imenovanja dodataka koju smo spomenuli na početku ovog vodiča, Maven će riješiti prefiks našeg dodatka i možemo skratiti naredbu:

mvn brojač: brojač ovisnosti

Primijetite da ova naredba koristi najnoviju verziju dodatka. Također, imajte na umu da moramo dodati svoje groupId prema pluginGroups Od našeg postavke.xml pa Maven također pretražuje u ovoj grupi:

 com.baeldung 

Ako provjerimo izlaz naredbe, možemo vidjeti da je dodatak brojao broj ovisnosti u pom.xml našeg dodatka:

[INFO] Skeniranje projekata ... [INFO] [INFO] ----------------------------------- [INFO] Izgradnja dodataka za protiv-maven Maven Mojo 0.0.1-SNAPSHOT [INFO] ---------------------------- [maven- dodatak] ---------------------------- [INFO] [INFO] --- dodatak za counter-maven: 0.0.1-SNAPSHOT : brojač ovisnosti (default-cli) @ counter-maven-plugin --- [INFO] Broj ovisnosti: 3 [INFO] --------------------- -------------------------------------------------- - [INFO] IZGRADNJA USPJEHA [INFO] ----------------------------------------- ------------------------------- [INFO] Ukupno vrijeme: 0,529 s [INFO] Završeno u: 2019-11-30T20 : 43: 41 + 01: 00 [INFO] --------------------------------------- ---------------------------------

Također možemo postaviti opseg parametar putem svojstava naredbenog retka:

mvn brojač: brojač ovisnosti -Dscope = test

Primijetite da opseg Ime je ono koje smo definirali u imovine atribut našeg parametra u mojo.

4.2. Korištenje našeg dodatka u projektu

Isprobajmo sada naš dodatak koristeći ga u projektu!

Stvorit ćemo vrlo jednostavan Maven projekt s nekim ovisnostima koje će naš dodatak računati:

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

Posljednja stvar je dodavanje dodatka u izradu. Moramo izričito postaviti da želimo pokrenuti brojač ovisnosti cilj:

   com.baeldung counter-maven-plugin 0.0.1-SNAPSHOT test brojača ovisnosti 

Primijetite da smo naveli opseg parametar u konfiguracija čvor. Također, nismo naveli nijednu fazu jer je naš mojo povezan s sastaviti faza prema zadanim postavkama.

Sada samo trebamo pokrenuti sastaviti faza za izvršavanje našeg dodatka:

mvn čista kompilacija

A naš će dodatak ispisati broj test ovisnosti:

[INFO] Skeniranje projekata ... [INFO] [INFO] ----------------------------------- ------------- [INFO] Primjer zgrade 0.0.1-SNAPSHOT [INFO] ------------------------ -------- [pom] --------------------------------- [INFO] [INFO] --- maven-clean-plugin: 2.5: clean (default-clean) @ primjer --- [INFO] [INFO] --- counter-maven-plugin: 0.0.1-SNAPSHOT: counter-brojač (zadani) @ primjer --- [INFO] Broj ovisnosti: 1 [INFO] ----------------------------------- ------------------------------------- [INFO] IZGRADNJA USPJEHA [INFO] ----- -------------------------------------------------- ----------------- [INFO] Ukupno vrijeme: 0,627 s [INFO] Završeno u: 2019-11-25T18: 57: 22 + 01: 00 [INFO] --- -------------------------------------------------- -------------------

U ovom vodiču nećemo opisati kako pisati jedinstvene ili integracijske testove za naš dodatak, ali Maven pruža neke mehanizme za to.

5. Dodavanje dokumentacije

Kada stvaramo dodatak Maven, važno je generirati dokumentaciju kako bi ga drugi ljudi mogli lako koristiti.

Ukratko ćemo objasniti kako generirati ovu dokumentaciju maven-plugin-plugin.

maven-plugin-plugin je već uključen u projekt, ali ažurirat ćemo ga tako da koristi najnoviju verziju.

Također, učinit ćemo isto za maven-site-plugin:

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

Zatim moramo biti sigurni da smo dodali javadoc našem Mojo a također dodati neke metapodatke u pom.xml dodatka:

 Baeldung //www.baeldung.com/ 

Nakon toga moramo dodati odjeljak za izvještavanje u naš pom.xml:

   org.apache.maven.plugins maven-plugin-plugin izvješće 

Na kraju ćemo generirati dokumentaciju naredbom maven site:

mvn stranica

Unutar ciljne mape možemo pronaći web mjesto direktorij sa svim generiranim HTML datotekama. The dodatak-info.html je onaj koji sadrži dokumentaciju dodatka:

Više opcija za dodavanje u našu dokumentaciju nalazi se u vodiču za dokumentaciju dodataka Maven.

6. Zaključak

U ovom uputstvu pokazali smo kako stvoriti dodatak Maven. Prvo smo implementirali jednostavan dodatak koji nam je pomogao da vidimo tipičnu strukturu projekta dodataka za Maven. Zatim smo pokrili neke alate koje Maven pruža za pomoć u razvoju dodataka.

Jednostavno smo pojednostavili stvari, ali istodobno smo pružili neke korisne poveznice s potrebnim informacijama o tome kako stvoriti snažniji dodatak.

Kao i uvijek, puni izvorni kod za primjere dostupan je na GitHubu.