6.1 Panimula sa mga plugin

Maaaring pahusayin ang mga karaniwang lifecycle gamit ang functionality gamit ang Maven plugins. Nagbibigay-daan sa iyo ang mga plugin na magpasok ng mga bagong hakbang sa karaniwang cycle (halimbawa, pamamahagi sa server ng application) o palawigin ang mga kasalukuyang hakbang.

Ang mga plugin sa Maven ay hindi isang bagay na pambihira, sa kabaligtaran, ang mga ito ang pinakakaraniwan at madalas na nakakaharap na bagay. Pagkatapos ng lahat, kung nais mong magtakda ng ilang mga nuances ng pagbuo ng iyong proyekto, kailangan mong tukuyin ang kinakailangang impormasyon sa pom.xml. At ang tanging paraan upang gawin ito ay ang pagsulat ng isang "plugin".

Dahil ang mga plugin ay kasing dami ng mga artifact gaya ng mga dependency, inilalarawan ang mga ito sa halos parehong paraan. Sa halip na seksyon ng dependencies - mga plugin, sa halip na dependency - plugin, sa halip na mga repository - pluginRepositories, repository - pluginRepository.

Halimbawa:

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

Ang pagdedeklara ng isang plugin sa pom.xml ay nagbibigay-daan sa iyo upang ayusin ang bersyon ng plugin, pati na rin itakda ang mga kinakailangang parameter para dito, tukuyin ang iba't ibang mga parameter ng pagsasaayos at itali sa mga yugto.

Sa madaling salita, nagpapatakbo si Maven ng ilang partikular na plugin na gumagawa ng lahat ng gawain. Iyon ay, kung gusto nating turuan si Maven tungkol sa mga espesyal na build ng proyekto, kailangan nating magdagdag sa pom.xml ng indikasyon upang ilunsad ang gustong plugin sa kinakailangang yugto at kasama ang mga kinakailangang parameter .

Ang bilang ng mga magagamit na plugin ay napakalaki, mayroong iba't ibang mga plugin na nagbibigay-daan sa iyo upang magpatakbo ng isang web application nang direkta mula sa maven upang subukan ito sa isang browser, makabuo ng mga mapagkukunan, at iba pa. Ang pangunahing gawain ng developer sa sitwasyong ito ay hanapin at ilapat ang pinakaangkop na hanay ng mga plugin .

6.2 Siklo ng buhay at mga plugin

Kadalasan, ang isang plugin ay ginagamit upang ilunsad ang ilang uri ng console utility sa panahon ng pagpapatupad ng isang tiyak na yugto. Bukod dito, maaari pa rin tayong magpatakbo ng isang regular na klase ng Java (na mayroong pangunahing pamamaraan, siyempre).

Halimbawa:

<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>

Kadalasan ang mga plugin ay maaaring napaka-flexible na i-configure. Ang lahat ng mga opisyal na plugin mula sa mga developer ng Maven ay napakahusay na naidokumento sa opisyal na website ng Maven. Halimbawa, para sa maven-compiler-plugin sa pahina ng Apache Maven Project, makakakita ka ng listahan ng lahat ng variable na kumokontrol sa plugin. Ang impormasyon sa plugin ay makukuha sa link

Higit pang mahalagang impormasyon. Iba't ibang mga plugin ang tinatawag ni Maven sa iba't ibang yugto ng kanilang lifecycle. Halimbawa, ang isang proyektong naglalarawan sa isang swing Java desktop application ay may iba't ibang yugto ng ikot ng buhay mula sa mga tipikal para sa pagbuo ng isang web application (digmaan).

O, halimbawa, kapag ang command na "mvn test" ay naisakatuparan, ang isang buong hanay ng mga hakbang sa ikot ng buhay ng proyekto ay sinisimulan: "process-resources", "compile", "process-classes", "process-test -resources", "test-compile" , pagsubok. Makikita mo ang pagbanggit ng mga yugtong ito sa mga mensaheng ipinakita ni Maven:

[INFO] Scanning for projects...
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources)     @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile)      @ codegym
[INFO] --- maven-resources-plugin:2.6:testResources         (default-testResources) @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile)          @ codegym ---
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test)         @ codegym ---
[INFO] Surefire report directory:           t:\ projects\codegym\target\surefire-reports

6.3 Mga Layunin sa Maven - mga layunin

Sa Maven, mayroon ding isang bagay bilang isang layunin (layunin). Ang layunin ay parang ang target ng startup ng Maven. Ang mga pangunahing layunin ay nag-tutugma sa mga pangunahing yugto:

  • patunayan;
  • ipunin;
  • pagsusulit;
  • pakete;
  • patunayan;
  • i-install;
  • i-deploy.

Sa bawat yugto ng ikot ng buhay ng proyekto, tinatawag ang isang partikular na plugin (jar-library), na kinabibilangan ng ilang layunin (layunin)

Halimbawa, ang plugin na "maven-compiler-plugin" ay naglalaman ng dalawang target: compiler:compile para sa pag-compile ng pangunahing source code ng proyekto, at compiler:testCompile para sa pag-compile ng mga pagsubok. Pormal, ang listahan ng mga yugto ay maaaring mabago, bagaman ito ay bihirang kinakailangan.

Kung kailangan mong magsagawa ng ilang hindi karaniwang pagkilos sa isang tiyak na yugto, kailangan mo lang idagdag ang naaangkop na plugin sa pom.xml

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>Name-plugin</artifactId>
  <executions>
    <execution>
      <id>customTask</id>
      <phase>generate-sources</phase>
      <goals>
        <goal>pluginGoal</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Ang pinakamahalagang bagay sa kasong ito ay upang tukuyin para sa plugin ang pangalan ng yugto ng "execution/phase", kung saan kailangan mong i-embed ang tawag sa layunin ng "goal" ng plugin. Halimbawa, kailangan mong bumuo ng Java code batay sa xml. Pagkatapos ay kailangan mo ang yugto ng "bumuo ng mga mapagkukunan", na inilalagay bago ang tawag sa yugto ng pag-compile at mainam para sa pagbuo ng bahagi ng mga mapagkukunan ng proyekto.