6.1 Eklentilere giriş

Standart yaşam döngüleri, Maven eklentileri kullanılarak işlevsellik ile geliştirilebilir. Eklentiler, standart döngüye yeni adımlar eklemenize (örneğin, uygulama sunucusuna dağıtım) veya mevcut adımları genişletmenize olanak tanır.

Maven'deki eklentiler sıra dışı bir şey değil, aksine en yaygın ve sık karşılaşılan şeydir. Sonuçta, projenizi oluşturmanın bazı nüanslarını ayarlamak istiyorsanız, pom.xml'de gerekli bilgileri belirtmeniz gerekir. Bunu yapmanın tek yolu da bir "eklenti" yazmaktır.

Eklentiler, bağımlılıklar kadar yapay olduklarından, hemen hemen aynı şekilde tanımlanırlar. Bağımlılıklar bölümü yerine - bağımlılık yerine eklentiler - depolar yerine eklenti - pluginRepositories, depo - pluginRepository.

Örnek:

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

Pom.xml'de bir eklenti bildirmek, eklenti sürümünü düzeltmenize ve bunun için gerekli parametreleri ayarlamanıza, çeşitli yapılandırma parametrelerini tanımlamanıza ve fazlara bağlamanıza olanak tanır.

Başka bir deyişle, Maven tüm işi yapan belirli eklentileri çalıştırır. Yani, Maven'e projenin özel yapılarını öğretmek istiyorsak, pom.xml'e istenen eklentiyi gerekli aşamada ve gerekli parametrelerle başlatmak için bir gösterge eklememiz gerekir .

Mevcut eklentilerin sayısı çok fazla, bir web uygulamasını doğrudan maven'den çalıştırmanıza, bir tarayıcıda test etmenize, kaynaklar oluşturmanıza ve benzerlerine izin veren çeşitli eklentiler var. Bu durumda geliştiricinin asıl görevi, en uygun eklenti setini bulup uygulamaktır .

6.2 Yaşam döngüsü ve eklentiler

Çoğu zaman, belirli bir aşamanın yürütülmesi sırasında bir tür konsol yardımcı programını başlatmak için bir eklenti kullanılır. Dahası, normal bir Java sınıfı bile çalıştırabiliriz (elbette bir ana yöntemi vardır).

Örnek:

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

Genellikle eklentiler çok esnek bir şekilde yapılandırılabilir. Maven geliştiricilerinin tüm resmi eklentileri, resmi Maven web sitesinde çok iyi belgelenmiştir. Örneğin, Apache Maven Projesi sayfasındaki maven-derleyici-eklentisi için , eklentiyi kontrol eden tüm değişkenlerin bir listesini görebilirsiniz. Eklenti ile ilgili bilgiler linkte mevcuttur.

Daha önemli bilgiler. Farklı eklentiler, yaşam döngülerinin farklı aşamalarında Maven tarafından çağrılır. Örneğin, bir swing Java masaüstü uygulamasını tanımlayan bir proje, bir web uygulamasının (savaş) geliştirilmesi için tipik olanlardan farklı yaşam döngüsü aşamalarına sahiptir.

Veya, örneğin, "mvn test" komutu yürütüldüğünde, projenin yaşam döngüsündeki bir dizi adım başlatılır: "proses kaynakları", "derleme", "proses sınıfları", "proses testi" -kaynaklar”, “test-derleme”, test. Maven tarafından görüntülenen mesajlarda bu aşamalardan bahsedildiğini görebilirsiniz:

[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 Maven'de Goller - Goller

Maven'de gol (gol) diye bir şey de var. hedef, Maven başlangıç ​​​​hedefi gibidir. Ana hedefler ana aşamalarla örtüşür:

  • doğrulamak;
  • derlemek;
  • Ölçek;
  • paket;
  • doğrulamak;
  • düzenlemek;
  • dağıtmak.

Proje yaşam döngüsünün her aşamasında, bir dizi hedef (hedef) içeren belirli bir eklenti (jar kütüphanesi) çağrılır.

Örneğin, "maven-compiler-plugin" eklentisi iki hedef içerir: projenin ana kaynak kodunu derlemek için derleyici:derleme ve derleme testleri için derleyici:testCompile. Nadiren gerekli olmasına rağmen, resmi olarak aşamaların listesi değiştirilebilir.

Belirli bir aşamada bazı standart dışı eylemler gerçekleştirmeniz gerekiyorsa, pom.xml dosyasına uygun eklentiyi eklemeniz yeterlidir.

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

Bu durumda en önemli şey, eklenti için "yürütme/faz" aşamasının adını tanımlamaktır; bu aşamada, çağrıyı eklentinin "goal" hedefine yerleştirmeniz gerekir. Örneğin, xml tabanlı Java kodu oluşturmanız gerekir. Ardından, derleme aşaması çağrısından önce yer alan ve proje kaynaklarının bir kısmını oluşturmak için ideal olan "kaynakları oluştur" aşamasına ihtiyacınız vardır.