Maven-plaginlar

All lectures for UZ purposes
Daraja, Dars
Mavjud

6.1 Plaginlar bilan tanishuv

Standart hayotiy sikllarni Maven-plaginlar yordamida qo'shimcha funksiyalar bilan to'ldirish mumkin. Plaginlar, masalan, ilova serveriga tarqatish kabi yangi qadamlarni standart siklga qo'shib yoki mavjud qadamlarni kengaytirishga imkon beradi.

Maven'dagi plaginlar hech qanday g'ayrioddiy narsa emas, aksincha, eng oddiy va tez-tez uchraydigan narsadir. Axir, agar siz loyihangizni yig'ishning ba'zi nozikliklarini belgilamoqchi bo'lsangiz, qaysi ma'lumotni pom.xml'ga kiritishingiz kerak bo'ladi. Va buni amalga oshirishning yagona yo'li - "plagin" yozishdir.

Plaginlar bog'liqliklar kabi artefaktlardir, shuning uchun ular deyarli bir xil tarzda tavsiflanadi. dependencies bo'limi o'rniga - plugins, dependency o'rniga - plugin, repositories o'rniga - pluginRepositories, repository - pluginRepository.

Misol:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.6</version>
    </plugin>
</plugins>

pom.xml da plagin e'lon qilish orqali plagin versiyasini aniq belgilab, unga kerakli parametrlarni o'rnatish, turli konfiguratsion parametrlarni aniqlash va fazalarga bog'lash imkonini beradi.

Boshqacha qilib aytganda, Maven ma'lum plaginlarni ishga tushiradi, ular barcha ishni bajarishadi. Ya'ni, agar biz Maven'ni loyihaning alohida yig'ilishlariga o'rgatmoqchi bo'lsak, pom.xml'ga kerakli fazada va kerakli parametrlar bilan kerakli plaginni ishga tushirish ko'rsatmasini qo'shish kerak.

Mavjud plaginlar soni juda ko'p, to'g'ridan-to'g'ri maven'dan web-ilovani ishga tushirib, uni brauzerda sinab ko'rish, resurslarni yaratish va hokazo turli xil plaginlar mavjud. Bunday vaziyatda dasturchining asosiy vazifasi eng mos plaginlar to'plamini topish va qo'llashdir.

6.2 Hayotiy sikl va plaginlar

Ko'pincha plagin muayyan faza davomida qandaydir konsol utilitasini ishga tushirish uchun foydalaniladi. Yanada ko'proq, biz hatto oddiy Java-klassni ishga tushirishimiz mumkin (albatta unda main metodi bo'lishi kerak).

Misol:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.2.1</version>
  <executions>
    <execution>
      <goals>
        <goal>java</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
   <mainClass>com.example.Main</mainClass> <arguments> <argument>first-argument</argument> <argument>second-argument</argument> </arguments>
  </configuration>
</plugin>

Odatda plaginlar juda moslashuvchan tarzda sozlanishi mumkin. Barcha Maven rasmiy plaginlari rasmiy Maven saytida yaxshi hujjatlashtirilgan. Masalan, maven-compiler-plugin uchun Apache Maven Project sahifasida plaginga boshqaruvchi barcha o'zgaruvchilar ro'yxatini ko'rish mumkin. Plagin haqidagi ma'lumot ushbu havola orqali mavjud.

Yana bir muhim ma'lumot. Har xil plaginlar Maven tomonidan loyihaning hayotiy siklning turli bosqichlarida chaqiriladi. Shunday qilib, swing'da tasvirlangan desktop Java-ilova, web-ilovaning (war) ishlab chiqish uchun xarakterli bo'lganlardan farqli hayotiy sikl bosqichlariga ega.

Yoki, masalan, “mvn test” buyrug'i bajarilganda, loyihaning hayotiy siklida butun qadamlar to'plami ishga tushiriladi: “process-resources”, “compile”, “process-classes”, “process-test-resources”, “test-compile”, “test”. Bu fazalar haqida Maven tomonidan chiqarilgan xabarlarda uchratishingiz mumkin:

[INFO] Loyihalarni skanerlash...
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources)     @ javarush ---
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile)      @ javarush
[INFO] --- maven-resources-plugin:2.6:testResources         (default-testResources) @ javarush ---
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile)          @ javarush ---
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test)         @ javarush ---
[INFO] Surefire hisobot katalogi:           t:\ projects\javarush\target\surefire-reports

6.3 Maqsadlar Maven'da – goals

Maven'da yana shunday tushuncha borki, bu maqsad (goal) deb ataladi. goal – bu Maven'ni ishga tushirish uchun maqsaddir. Asosiy maqsadlar asosiy fazalar bilan mos keladi:

  • validate;
  • compile;
  • test;
  • package;
  • verify;
  • install;
  • deploy.

Har bir loyihaning hayotiy sikl fazasida ma'lum bir plagin (jar-kutubxona) chaqiriladi, bu esa ma'lum miqdordagi maqsadlarni (goal) o'z ichiga oladi

Misol uchun, "maven-compiler-plugin" plaginida ikkita maqsad bor: compiler:compile loyihaning asosiy manba kodini kompilyatsiya qilish uchun va compiler:testCompile testlarni kompilyatsiya qilish uchun. Rasmiy ravishda, fazalar ro'yxatini o'zgartirish mumkin, garchi bunday zarurat kamdan-kam hollarda bo'lsa ham.

Agar sizga muayyan fazada qandaydir noodatiy harakatlarni bajarish kerak bo'lsa, faqat mos keluvchi plaginni pom.xml'ga qo'shishingiz kerak

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>имя-плагина</artifactId>
  <executions>
    <execution>
      <id>customTask</id>
      <phase>generate-sources</phase>
      <goals>
        <goal>pluginGoal</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Bu holda eng muhimi – plagin uchun “execution/phase” faza nomini aniqlash, bu fazaga plagin maqsadini “goal” chaqirishi kerak bo'lgan joyga kiritish kerak. Masalan, sizga xml asosida Java-kod yaratish kerak bo'lsa, unda "generate-sources" fazasi kerak, u compile fazasining chaqirilishidan oldin joylashgan va loyihaning manba kodlarining bir qismini yaratish uchun ideal tarzda mos keladi.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION