6.1 Плагиндер менен таанышуу
Стандарттык өмүр циклдерди Maven-плагиндер аркылуу кошумча функционал менен толуктаса болот. Плагиндер стандарттык циклге жаңы кадамдарды кошууга (мисалы, колдонмо серверге жайгаштыруу) же азыркы кадамдарды кеңейтүүгө мүмкүнчүлүк берет.
Maven'деги плагиндер өзгөчө нерсе эмес, тескерисинче, бул эң жөнөкөй жана кеңири таралган нерсе. Эгерде сиз долбооруңузду түзүүдө белгилүү бир нюанстарды киргизгиңиз келсе, анда сизге pom.xml'де керектүү маалыматтарды көрсөтүш керек. Жана муну жасоонун жалгыз жолу - "плагин" жазуу.
Плагиндер да көз каранды болгондор сыяктуу артефакт болгондуктан, алар дээрлик ошондой эле сүрөттөлөт. Dependencies бөлүмүнүн ордуна - plugins, dependency ордуна - plugin, repositories ордуна - pluginRepositories, repository ордуна - pluginRepository.
Мисал:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
Pom.xml'де плагинди жарыялоо плагиндин версиясын бекитүүгө, ошондой эле зарыл параметрлерди орнотууга, ар кандай конфигурациялык параметрлерди аныктоого жана фазаларга байлоого мүмкүндүк берет.
Башкача айтканда, Maven белгилүү бир плагиндерди ишке киргизип, бардык ишти аткарат. Башкача айтканда, биз Maven'ди долбоордун өзгөчө түзүлүштөрүнө үйрөткүбүз келсе, pom.xml'ге керектүү фазада жана зарыл параметрлер менен керектүү плагинди ишке киргизүү көрсөтмөлөрүн кошуу керек.
Жеткиликтүү плагиндердин саны абдан чоң, maven'ден түздөн-түз web-тиркемени браузерде сыноо үчүн ишке киргизүүгө, ресурстарды генерирлөө сыяктуу ар кандай плагиндер бар. Бул жагдайда, иштеп чыгуучунун негизги милдети - эң ылайыктуу плагиндердин топтомун табуу жана колдонуу.
6.2 Өмүр цикли жана плагиндер
Көп учурларда плагин белгилүү бир фазанын аткарылышында кандайдыр бир консоль утилитасын ишке киргизүү үчүн колдонулат. Мындан тышкары, биз жөнөкөй Java-классты (анын ичинде main ыкмасы бар, албетте) ишке киргизе алабыз.
Мисал:
<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>
Адатта плагиндерди абдан ийкемдүү конфигурациялоо мүмкүн. Maven'дин расмий плагиндери расмий сайтында абдан жакшы документтелген. Мисалы, maven-compiler-plugin үчүн Apache Maven Project баракчасында плагинди башкаруучу бардык өзгөрмөлөрдүн тизмегин көрө аласыз. Плагин тууралуу маалымат бул шилтемеде жеткиликтүү
Таанымал маалымат дагы бар. Ар кандай плагиндер Maven тарабынан ар кандай стадияларда чакырылат. Мисалы, десктоптук Java-тиркемени swing менен сүрөттөгөн долбоор веб-тиркемени (war) иштеп чыгууга мүнөздүү болгон стадиялардан айырмаланган өмүр циклине ээ.
Же болбосо, "mvn test" командасы аткарылганда, долбоордун өмүр циклинде бүтүндөй кадамдар жыйындысы башталат: "process-resources", "compile", "process-classes", "process-test-resources", "test-compile", "test". Бул фазаларды Maven тарабынан чыгарылган билдирүүлөрдөн көрө аласыз:
[INFO] Scanning for projects...
[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 report directory: t:\ projects\javarush\target\surefire-reports
6.3 Цели в Maven – goals
Maven'де дагы бир түшүнүк бар - бул максат (goal). Goal - бул Maven'дин ишке киргизүү максаты сыяктуу. Негизги максаттар негизги фазалар менен дал келет:
- validate;
- compile;
- test;
- package;
- verify;
- install;
- deploy.
Долбоордун өмүр циклинин ар бир фазасында белгилүү бир плагин (jar китепканасы) чакырылат, ал белгилүү бир максаттарды (goal) камтыйт
Мисалы, "maven-compiler-plugin" плагини эки максатты камтыйт: compiler:compile негизги кодду компиляциялоо үчүн жана compiler:testCompile тесттерди компиляциялоо үчүн. Формалдуу түрдө, фазалардын тизмегин өзгөртүүгө болот, бирок бул сейрек учурларда талап кылынат.
Эгерде сен белгилүү бир фазада кандайдыр бир стандарттан тышкаркы аракеттерди аткарышың керек болсо, pom.xml'ге тиешелүү плагинди кошуу жетиштүү болот
<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>
Бул учурда эң маанилүү нерсе - бул плагин үчүн "execution/phase" фазасын аныктоо, бул плагин максатын "goal" чакырыкка киргизүүчү фаза болуп саналат. Мисалы, xml негизинде Java-кодду генерирллөө керек болсо. Анда сен "generate-sources" фазасына муктажсың, ал compile фазасын чакырганга чейин жайгашкан жана долбоордун негизги коддорун генерирлөө үчүн идеалдуу фазаны түзөт.
GO TO FULL VERSION