Maven ilə necə başlayıram?

Markus Spiske'nin Unsplash üzərindəki şəkli

Maven sənayedə çox geniş istifadə olunur və səmərəli istifadə edilə bilməsi üçün bu məqalədə əsasları izah etməyi çox sevirdim.

Bu məqalə Maven əsasları, Maven plaginləri, Maven asılılıqları və Maven qurma dövrü kimi şeyləri əhatə edir.

Maven nədir?

Maven, layihələr qurmaq üçün standart bir yol təqdim etmək üçün yaradılmışdır. Güclü xüsusiyyətlərdən biri də asılılıq idarəetməsidir.

Maven, asılılıq idarəsi üçün geniş istifadə olunur, ancaq edə biləcəyi tək şey deyil.

Asılılıq idarəetməsinin nə olduğunu bilmirsinizsə, narahat olmayın. Mən də bu məqalədə bunu əhatə edəcəyəm.

Maven quraşdırın

Maven'i https://maven.apache.org/ saytından yükləyə bilərsiniz.

Ayrıca, MVN əmrlərinin işləməsi üçün Mavenin PATH-da quraşdırıldığından əmin olun.

Komanda ilə quraşdırıldığını və əldə edilə biləcəyini təsdiqləyə bilərsiniz

mvn -v

JAVA_HOME-nin qurulduğundan da əmin olun.

Varsayılan olaraq, Maven, JAVA_HOME-da təqdim etdiyiniz JDK-dan istifadə edir. Bu ləğv edilə bilər, lakin bu məqalə üçün JAVA_HOME-da verilən JDK-dan istifadə edəcəyik.

Maven layihənizi hazırlayın

Ümumiyyətlə Eclipse kimi bir IDE asanlıqla Maven layihələri yaratmaq üçün istifadə edilə bilər. Ancaq bu məqalədə addımları aydın şəkildə başa düşmək üçün əmr satırından əmrləri işə salacağam.

Layihəni qurmaq üçün aşağıdakı əmri işə salın.

MVN-B arxetipi: Yaradın -DarchetypeGroupId = org.apache.maven.archetypes -DgroupId = com.first.app -DartifactId = first-maven-app

Yuxarıdakı əmrdəki arxetip nümunə layihə şablonundan başqa bir şey deyil. groupdId, layihənizin hansı qrupa aid olduğunu və artifactId layihənin adı olduğunu göstərir.

Yuxarıda göstərilən əmri işə saldıqdan sonra tələb olunan plaginləri yükləmək və layihəni yaratmaq təxminən bir dəqiqə çəkə bilər.

İndi ilk maven-app adlı qovluq yaradılacaqdır. Qovluğu açın və pom.xml adlı bir sənəd görəcəksiniz

pom.xml

POM, Layihə Nümunə Modelinin mənasını verir. Pom.xml-də layihənizlə bağlı bütün məlumatları tapa bilərsiniz. Budur maven nə etməlidir.

Bu sənədin məzmunu aşağıda göstərilmişdir:

xsi: schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 com.first.app İlk Maven tətbiqi banka 1.0-SNAPSHOT ilk maven-tətbiqetmə http://maven.apache.org yunit yunit 3.8.1 test

groupdId və artifactId, komanda xəttində təqdim etdiyimiz eyni dəyərlərdir.

Qablaşdırma əsərin paket formatıdır. Varsayılan bankadır. Eşitmə, müharibə, tar və s. Kimi digər dəyərlərə sahib ola bilər.

versiya əsərin versiya nömrəsini göstərir. SNAPSHOT varsa, versiyanın hələ də devdə olduğunu və sabit olmaya biləcəyini göstərir. Versiya nömrəsində SNAPSHOT yoxdursa, mövcud buraxılış versiyasıdır.

ad proyektin adidir.

Aşağıdakı Maven-də asılılıqlar və plaginlər barədə izah edəcəyəm.

Böyük POM

Gördüyünüz kimi, pom.xml olduqca kiçikdir. Bunun səbəbi, konfiqurasiyanın böyük bir hissəsinin, Maven tərəfindən daxili olaraq idarə olunan super POM olaraq bilinən yerdə olmasıdır.

pom.xml, Super Pom-da mövcud olan bütün konfiqurasiyanı qorumaq üçün Super Pom-u genişləndirir.

Super Pom-da mövcud olan konfiqurasiyalardan biri aşağıdakıları göstərir:

  • Bütün Java mənbə kodu src / main / java-dadır
  • Bütün Java test kodu src / test / java-dadır

Bu yazıda həm mənbə kodunu, həm də test kodunu əhatə edəcəyimiz üçün yalnız bu konfiqurasiyadan bəhs edəcəyəm.

kod

Burada müzakirə olunan bütün kodlar bu repoda mövcuddur: https://github.com/aditya-sridhar/first-maven-app

Bəzi sadə Java kodu əlavə edək. Aşağıdakı qovluq quruluşunu yaradın:

src / main / java / com / test / app / App.java

App.java əlavə edəcəyimiz Java kodudur.

App.java-da aşağıdakı kodu kopyalayın:

Paketi com.first.app; idxal java.util.List; idxal java.util.ArrayList; public class App {public static void main (String [] args) {Siyahı maddələr = yeni ArrayList (); items.add (1); items.add (2); maddələr (3) əlavə edin; printVals (maddələr); System.out.println ("Sum:" + getSum (items)); } ümumi statik boş çapVALS (Siyahı items) {items.forEach (item -> {System.out.println (item);}); } statik int getSum (Siyahı maddələr) {int cəmi = 0; for (int item: items) {sum + = item; } Qaytarma məbləği; }}

Bu, 2 funksiyası olan sadə koddur.

Ancaq kodun printVals funksiyasındakı forEach loop içərisindəki lambda ifadələrindən istifadə etdiyini unutmayın.

Lambda ifadələrinin çalışması üçün ən az Java 8 tələb olunur. Bununla birlikdə, Maven 3.8.0 varsayılan olaraq Java versiyası 1.6 ilə işləyir.

Buna görə mavenə bunun yerinə Java 1.8 istifadə etməsini söyləməliyik. Bunun üçün Maven plaginlərindən istifadə edirik.

Maven plaginləri

Hansı Java versiyasını istifadə edəcəyini göstərmək üçün Maven Compiler Plugin istifadə edəcəyik. Pom.xml-ə aşağıdakı sətirləri əlavə edin:

... org.apache.maven. plugins Maven kompilyatoru 3.8.0 1.8 1.8 ...

Mənbə və hədəf Java versiyalarının 1.8-ə ayarlandığını görə bilərsiniz.

Plugins əsasən Mavendə bəzi hərəkətlər edir. Derleyici eklentisi mənbə sənədlərini tərtib edir.

Tam pom.xml ilə burada tanış ola bilərsiniz.

Orada bir çox Maven plaginləri var. Plaginləri necə düzgün istifadə edəcəyinizi bilirsinizsə, Maven ilə heyrətləndirici şeylər edə bilərsiniz.

Maven asılılığı

Kod yazarkən ümumiyyətlə bir çox mövcud kitabxanadan istifadə edirik. Bu mövcud kitabxanalar asılılıqdan başqa bir şey deyildir. Maven, asılılıqların idarə edilməsini asanlaşdırır.

Layihəmizin pom.xml-də aşağıdakı asılılığı görə bilərsiniz:

yunit yunit 3.8.1 test

Bu asılılıq deyir ki, cuna ehtiyacımız olacaq. Junit, Java kodu üçün vahid testləri yazmaq üçün istifadə olunur. Bir çox başqa asılılıq da əlavə edilə bilər.

Kodunuzda JSON ilə işləmək istədiyinizi düşünək. Sonra gson asılılığını aşağıdakı kimi əlavə edə bilərsiniz:

com.google.code.gson gson 2.8.5

Maven əsərlərini https://search.maven.org saytında tapa bilərsiniz

Keçid asılılığı

Məsələn, proyektə A asılılığı əlavə etdiyinizi düşünək. İndi A, B adlı bir asılılıqdan asılıdır. B, C adlı bir asılılıqdan asılıdır.

Layihədə A istifadə etdiyiniz üçün B və C-yə də ehtiyacınız olacaq.

Ancaq xoşbəxtlikdən yalnız pom.xml-də A əlavə etmək kifayətdir. Maven A-nın B-dən, B-nin C-dən asılı olduğunu öyrənə bildiyindən, Maven avtomatik olaraq B və C-ni daxili olaraq yükləyəcəkdir.

Burada B və C keçid asılılıqlarıdır.

Xüsusi Maven deposu

Bu asılılıqların hamısı http://repo.maven.apache.org/maven2 ünvanındakı ümumi bir Maven deposunda mövcuddur.

İşiniz üçün xüsusi olan bəzi əsərlər ola bilər. Bu vəziyyətdə, təşkilatınızda xüsusi bir Maven deposunu saxlaya bilərsiniz. Bu təlimatda bu hissəni əhatə etməyəcəyəm.

Test sinfi əlavə edin

Junit-dən asılılıq layihədə mövcud olduğundan test dərsləri əlavə edə bilərik.

Aşağıdakı qovluq quruluşunu yaradın:

src / test / java / com / test / app / AppTest.java

AppTest.java test sinifidir.

Aşağıdakı kodu AppTest.java-ya kopyalayın:

Paketi com.first.app; idxal junit.framework.TestCase; idxal java.util.List; idxal java.util.ArrayList; ümumi sinif AppTest, TestCase'i genişləndirir {public AppTest (String testName) {super (testName); } ümumi boşluq testGetSum () {Siyahı maddələr = yeni ArrayList (); items.add (1); items.add (2); maddələr (3) əlavə edin; assertEquals (6, App.getSum (maddələr)); }}

Bu sinif tətbiq sinfində mövcud olan getSum () funksiyasını yoxlayır.

Maven Həyat Döngüsü və Mərhələlər Qurun

Maven, əsərlər yaratmaq və yaymaq üçün bir qurma həyat dövrü izləyir. Üç əsas həyat dövrü var:

  1. Standart həyat dövrü: Bu əsərin yaradıldığı və istifadəyə verildiyi yerdir.
  2. Clean Lifecycle: Bu layihə təmizlənməsi ilə bağlıdır
  3. Site Lifecycle: Bu sayt sənədləri ilə bağlıdır. Bunu başqa bir məqalədə izah edəcəyik.

Həyat dövrü mərhələlərdən ibarətdir. Standart həyat dövrü üçün bəzi əsas mərhələlər:

  • doğrulama: Layihə üçün lazım olan bütün məlumatların mövcudluğunu yoxlayır
  • kompilyasiya: Mənbə sənədlərini tərtib etmək üçün istifadə olunur. Tərtib etmək üçün aşağıdakı əmri işə salın:
MVN tərtib edin
  • Bu əmri işlədikdən sonra, tərtib edilmiş bütün sənədlərlə hədəf adlı bir qovluq yaradılacaqdır.
  • test: Layihədə mövcud olan bütün komponent testlərini aparmaq üçün istifadə olunur. Bu səbəbdən Junit asılılığına ehtiyac duyulurdu. Vahid testləri Junit ilə yazıla bilər. Test dərsləri əmri ilə işləyə bilər
MVN testi
  • paket: Bu, yuxarıdakı bütün mərhələləri icra edir və artefaktı paketləyir. Burada bir JAR sənədinə yığılır, çünki pom bir JAR lazım olduğunu göstərir. Bunu etmək üçün aşağıdakı əmri işə salın:
MVN paketi
  • JAR faylı təyinat qovluğunda yaradılacaqdır
  • Doğrula: Bu, layihədəki keyfiyyət meyarlarına cavab verilməsini təmin edir
  • quraşdırma: Bu paketi yerli bir depoda quracaq. Yerli depo yeri ümumiyyətlə $ {user.home} / olur. M2 / depo. Bunu etmək üçün aşağıdakı əmrdən istifadə edin:
MVN quraşdırın
  • Dağıtma: Bu paketi uzaq bir depoya yerləşdirəcəkdir

Daha çox istifadə olunan bir əmr, aşağıda verilmiş təmiz əmrdir:

mvn təmiz

Bu əmr təyinat qovluğundakı hər şeyi təmizləyəcəkdir

İstinadlar

Mavenin Rəsmi Bələdçisi: https://maven.apache.org/guides/getting-started/

POM haqqında daha çox məlumat: https://maven.apache.org/guides/introduction/introduction-to-the-pom.html

Yaşam dövrü haqqında daha çox məlumatı https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html saytından tapa bilərsiniz.

Təbrik edirəm

Artıq Mavendən necə istifadə edəcəyinizi bilirsiniz. Bu məqalədə yalnız pom, plaginlər, asılılıqlar və qurma ömrü əsasları nəzərdən keçirildi. Maven haqqında daha çox məlumat üçün yuxarıda göstərdiyim bağlantılara baxın.

Happy Coding Cod

Müəllif haqqında

Texnologiyanı sevirəm və inkişafdakıları təqib edirəm. Texnoloji biliklərimlə də başqalarına kömək etməyi sevirəm.

Xahiş edirəm mənimlə https://www.linkedin.com/in/aditya1811/ LinkedIn hesabım vasitəsi ilə əlaqə saxlaya bilərsiniz.

Twitter-də https://twitter.com/adityasridhar18-də məni izləyə bilərsiniz

Veb saytım: https://adityasridhar.com/

Əvvəlcə adityasridhar.com saytında yayımlandı.