Top 5 idei și subiecte interesante de proiecte Maven cu mai multe module pentru începători [2022]

Publicat: 2021-05-27

Pe măsură ce orice proiect devine mai complex și mai stratificat, modalitatea corectă de a-l gestiona este împărțirea lui în diferite module. În Maven, deși este posibil să se conecteze aceste proiecte multiple ca dependențe, face procesul de construire mult mai complex. Prin urmare, abordarea preferată este de a structura proiectul ca unul multi-modular și de a trece restul către Maven.

Cuprins

Beneficiile utilizării mai multor module în Maven

Avantajul semnificativ al folosirii mai multor module în locul injecției de dependență sau al oricărei alte proceduri este că reduce dublarea. Pentru a înțelege mai bine acest lucru, să presupunem că lucrați la o aplicație care constă din două module – să spunem modulul backend și modulul frontend.

Dacă lucrați la ambele module și modificați anumite funcționalități care afectează ambele module, va trebui să construiți ambele module sau componente izolat, fără un instrument de construcție specializat. Sau, trebuie să scrieți un script pentru a compila codul, a rula teste și a afișa rezultatele finale.

Acum, dacă complexitatea crește și mai mult și proiectul dvs. are mai mult de două module, va deveni din ce în ce mai greu să efectuați această sarcină fără un instrument de construcție specializat. În plus, în problemele din lumea reală, proiectele dvs. pot necesita unele plugin-uri Maven pentru a efectua unele operațiuni cruciale pe parcursul întregului ciclu de viață al construcției, pentru a partaja dependențe sau pentru a include alte proiecte BOM.

Ca urmare a acestor provocări, modulele multiple din Maven sunt extrem de utile și vă permit să construiți modulele aplicației într-o singură linie de comandă. De asemenea, vă permite să partajați o cantitate mare de date și configurații între mai multe module fără probleme.

Citește și: Răspuns la întrebarea interviului Maven

Termeni cheie de cunoscut cu privire la proiectele cu mai multe module în Maven

1. POM părinte (modul obiect de proiect)

Fiecare fișier pom.xml din Maven – pentru susținerea moștenirii – are un POM părinte, cunoscut sub numele de Super POM. Acesta poate fi localizat în fișierele binare Maven și, de asemenea, puteți îmbina cele două fișiere pentru a crea POM-ul efectiv.

Deci, vă puteți crea propriul fișier pom.xml pentru a servi ca părinte pentru proiectul dvs. Odată ce ați făcut asta, puteți adăuga toate dependențele și configurația, le puteți seta ca părinte al modulelor copil și puteți activa moștenirea. Cu excepția moștenirii, Maven oferă și agregare. POM-ul părinte care folosește funcționalitatea de agregare este cunoscut ca POM agregat – acest tip de POM declară modulele copil în mod explicit în fișierul pom.xml.

2. Submodule

Subproiectele, cunoscute și ca submodule, pot fi înțelese ca module Maven standard care moștenesc de la POM părinte. Folosind moștenirea, modulele partajează diferite dependențe și configurații. Cu toate acestea, dacă trebuie să construiți rapid proiectul, va trebui să declarați în mod explicit submodulele în POM-ul părinte, transformându-l în POM agregat.

3. Proiectul Multi-Module Simplu

App și util sunt două module care sunt conținute în Proiectul Multi-Module Simplu. Modulul util este necesar pentru a furniza o metodă statică de a uni sau de a adăuga diferite șiruri de caractere folosind biblioteca Apache Commons Lang, iar modulul de aplicație este necesar pentru a apela modulul util. Iată un fragment din fișierul app.java:

simple-multi/app/src/main/java/app/App.java

aplicație de clasă publică {

public static void main(String[] args) {

System.out.println(nouă aplicație().greet(„Lumea!”));

}

public String greet(Nume șir) {

return Util.join(„Bună ziua”, nume);

}

}

Pentru a construi proiectul, rulați

$ cd simplu-multi

$ mvn clean test

Generatorul de cod al lui Maven construiește ambele module ale proiectului dumneavoastră în ordinea corectă, efectuează testele necesare și emite rezultatele într-un format de rezumat ușor de înțeles, ca mai jos:

4. Structura unui proiect cu mai multe module

Iată aspectul unui proiect simplu cu mai multe module:

Directorul simplu-multi este directorul rădăcină și este prezent chiar în partea de sus a întregului proiect. Conține POM de nivel superior (POM părinte), dar acest POM părinte nu are niciun folder sursă.

Directorul de nivel superior conține, de asemenea, aplicații și utilitare, care sunt proiecte obișnuite Maven cu directoare și fișierul pom.xml.

POM-ul de nivel superior și modulul POM diferă ușor de POM-ul obișnuit. Să ne uităm în detaliu la ceea ce conțin:

5. POM de nivel superior

Un POM părinte sau un POM de nivel superior este necesar de către proiectul Maven Multi-Module în directorul rădăcină.

POM-ul de nivel superior definește aspecte importante și coordonatele proiectului, cum ar fi ID-ul artefact, versiunea și ID-ul grupului, ca în orice proiect normal. Cu toate acestea, tipul de ambalare pentru aceasta nu este în formatul obișnuit de război sau borcan, ci sub formă de pom. Acest lucru se datorează faptului că modulul de nivel superior nu conține niciun director sursă suplimentar. Modulele/elementele modulului adaugă modulele aplicație și util.

Conținutul acestui fișier include:

simple-multi/pom.xml

<proiect xmlns="http://maven.apache.org/POM/4.0.0″ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

<modelVersion>4.0.0</modelVersion>

<groupId>org.codetab</groupId>

<artifactId>simple-multi</artifactId>

<version>1.0</version>

<packaging>pom</packaging>

<module>

<module>aplicație</module>

<module>util</module>

</module>

</proiect>

Pentru a rezuma, POM-ul de nivel superior specifică tipul de ambalare pom și listează în mod explicit toate submodulele.

Rețineți că nu trebuie să vă faceți griji cu privire la comandă în timp ce declarați submodulele în POM-ul părinte, deoarece Maven folosește un Reactor pentru a comanda corect modulele enumerate. În simplu-multi, Maven construiește modulul util și apoi aplicația, deoarece aplicația depinde de util.

5. Modulul POM

Folderul Modul POM conține un folder sursă obișnuit și propriul fișier pom.xml. Conținutul acestui util/pom.xml este:

util/pom.xml

<proiect xmlns="http://maven.apache.org/POM/4.0.0″ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

<modelVersion>4.0.0</modelVersion>

<părinte>

<groupId>org.codetab</groupId>

<artifactId>simple-multi</artifactId>

<version>1.0</version>

</părinte>

<artifactId>util</artifactId>

<proprietăți>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

</proprietăți>

<dependențe>

<dependenta>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

<version>3.6</version>

</dependență>

<dependenta>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

<scope>test</scope>

</dependență>

</dependențe>

</proiect>

Nu este nevoie să specificați ID-ul grupului și versiunea pentru modul, deoarece acestea vor fi moștenite de la părinte. Blocul dependențe/dependențe definește dependențele modulului util – commons-lang3 și JUnit.

Acum, să ne uităm la app/pom.xml, care este destul de similar cu util/pom.xml, cu excepția blocului de dependențe, care este afișat mai jos:

app/pom.xml

….

<dependențe>

<dependenta>

<groupId>org.codetab</groupId>

<artifactId>util</artifactId>

<version>1.0</version>

</dependență>

….

</dependențe>

Modulul aplicație folosește metode din modulul util și, pentru aceasta, app/pom.xml specifică util ca dependență.

Pentru a rezuma toate lucrurile explicate mai sus:

Proiectul de nivel superior (proiectul părinte),

  • Definește pom.xml de nivel superior, care specifică toate coordonatele și submodulele și setează tipul de ambalare ca pom.
  • Conține folderele de module suplimentare.
  • Nu conține foldere sursă.

Fiecare dintre folderele modulelor nu este altceva decât directoare obișnuite de proiect Maven. Cu toate acestea, fișierul pom.xml conține:

  • Elementul părinte specifică părintele modulului.
  • Coordonatele modulului sunt specificate în elementul artefactID. GroupID și versiunea nu sunt menționate, deoarece sunt moștenite de la coordonatele părinte.
  • Dependența, dacă un modul depinde de altul, este menționată în elementul dependențe/dependență.

Executarea Proiectului Multi-Module

Comanda $ mvn clean package poate fi folosită pentru a compila, testa și împacheta modulul multiplu. Cu toate acestea, pentru a-l rula cu maven-exec-plugin-ul necesită următorii pași:

Rulați următoarele comenzi:

$ cd simplu-multi

$ mvn clean install

$ mvn exec:java -pl app -Dexec.mainClass=app.App

Comanda de instalare instalează modulele în depozitul dvs. local, unde puteți rula apoi proiectul. Opțiunea -pl app informează pluginul exec despre modulul aplicației și rulează clasa sa app.App. Fără instalare, procesul de construire eșuează, deoarece Maven nu poate descărca și rezolva dependența de modulul util.

Cu toate acestea, este destul de greoi să instalați proiectul într-un depozit local de fiecare dată înainte de fiecare rulare, mai ales când se află în faza de dezvoltare. Pentru a ușura acest lucru, puteți executa direct modulul multiplu în Eclipse IDE fără a efectua pasul de instalare.

Învață Cursuri de dezvoltare software online de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.

Concluzie

Sperăm că acest articol v-a ajutat să începeți procesul Maven Multi-Module. Ca și cu orice nou, este vorba doar de a obține înțelegerea inițială. Odată ce ați înțeles structura și funcționarea de bază, veți fi pe cale de a gestiona fără probleme mai multe module în Maven.

Dacă sunteți interesat să aflați mai multe despre dezvoltarea de software full-stack, consultați programul Executive PG în dezvoltare software de la upGrad și IIIT-B – Specializare în dezvoltare full-stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă, 9 + proiecte și sarcini, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.

Ce sunt proiectele cu mai multe module?

Multi-modulele vă permit să grupați artefacte comune într-un singur modul pentru a reduce numărul de module necesare pentru a construi și implementa un proiect. Proiectele cu mai multe module pot fi construite din două sau mai multe module prin definirea unei relații părinte-copil între aceste module. Modulul părinte al unui proiect cu mai multe module se numește modul rădăcină. Modulul copil al unui proiect cu mai multe module se numește submodul. Modulul rădăcină este piatra de temelie a unei build multi-module. Modulele copil nu pot fi construite singure, ele trebuie construite împreună cu modulul rădăcină.

Ce este un fișier de model de obiect de proiect în Maven?

Un fișier de model de obiect al proiectului (POM) este un fișier care descrie un proiect. Este unitatea fundamentală de lucru prin care dezvoltatorii publică artefacte într-un depozit. Un model de obiect de proiect este un fișier text simplu care definește un proiect, listează componentele acestuia și definește ceea ce fac acestea. Modelul obiect al proiectului este o componentă cheie a cadrului de management al proiectelor software Maven. Este un tip special de document XML din care este compus un proiect Maven. Un fișier pom poate fi considerat ca o descriere a unui proiect. Îi spune lui Maven despre ce este proiectul, precum și o descriere a fiecărui module din proiect, dependențele și versiunile acestora. Modulele sunt elementele de bază ale unui proiect Maven. Modulele și dependențele lor sunt folosite pentru a construi proiectul final.

Cum se creează un proiect Maven cu mai multe module?

Pentru a realiza un proiect Maven cu mai multe module, trebuie să definiți un pom părinte și să vă asigurați că toate sub-modulele îl moștenesc. De asemenea, este important să rețineți că puteți pune, de asemenea, toate sub-modulele într-un singur depozit și să îndreptați pom-ul părinte către asta. Un proiect cu mai multe module Maven este compus dintr-un pom părinte și unul sau mai multe sub-module. Pom-ul părinte poate defini metadatele proiectului Maven cu mai multe module, cum ar fi ID-ul artefactului, versiunea, ambalarea și dependențele. Sub-modulele pot moșteni metadatele părintelui, iar pom-ul părinte poate defini configurația de nivel înalt a proiectului, cum ar fi organizarea și descrierea proiectului.