Maven Eklentileri – Bölüm 1/2

Maven, Java ortamında bir proje gerçeklemek için olabilecek en iyi araçlardan biri. Fakat bu zamana kadar maven aracını sadece  proje bağımlılıklarını yönetmek için kullanıyorsanız maven aracını tam hakkıyla kullanmıyorsunuzdur. Maven geliştirilen eklentiler sayesinde, projenizi sizin istediğiniz şekilde derleyip, sizin istediğiniz şekilde paketleyebiliyor. Üstelik bu paketleme işlemleri sadece, WAR, JAR ve EAR ile sınırlı değil. Java ile proje geliştirirken karşılaşacağınız neredeyse tüm uzantılarla paketleme yapabiliyorsunuz. Üstelik istediğiniz taktirde maven sizin için proje raporlarını oluşturup bunları ufak bir site haline bile getirebiliyor. İşte bu iki özellik bu yazı dizimizin ana konusunu oluşturacak

Içerik

Bu kısa yazı dizimiz iki temel konuyu inceleyecek. Bu yazılardan ilki build ve test aşamalarında çalışacak eklentileri ele alırken, ikinci yazı daha çok raporlama üzerine olacak. Tabi sadece eklentilerin ne olduğu ve nasıl kullanılacağını değil aynı zamanda kullanmanız halinde size ne gibi yararlar sağlanılacağınada değinilecek.

  1. Maven Eklentileri – Bölüm 1/2: Build ve Test Eklentileri

  2. Maven Eklentileri – Bölüm 2/2: Raporlama Eklentileri

Build ve Test Eklentileri

maven-compiler-plugin

Tanım

Maven Compiler eklentisi, adından da anlayacağınız üzere size projenizi derlemeniz sırasında kolaylıklar sağlamaktadır. Her maven projesinde bu eklenti bulunur fakat, ayarlarının yapılabilmesi için pom.xml dosyasına eklemeniz gerekecektir. Ben geliştirdiğim projelerde genel olarak, kaynak dosya ve hedeflediğim java sürümünü belirtmek için kullanıyorum.

Kullanım

Maven Compiler eklentisini kullanmak için, eklentinizi <build> etiketinin altındaki, <plugins> etiketinin altına <plugin> etiketi  yerleştirmeniz gerekmektedir. Benim kullandığım şekliyle eklentinin örneği aşağıda mevcuttur. Tek yapmanız gereken <properties> etiketinin altına <target.java.version> etiketi tanımlamak olacaktır. Bu yeni etiketin alacağı değerler ise istediğiniz java versiyonunu göstermelidir. Yani 1.7 ya da 1.6 gibi olmalıdır.

pom.xml

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>${target.java.version}</source>
<target>${target.java.version}</target>
</configuration>
</plugin>

maven-eclipse-plugin

Tanım

Yazılarımdan da anlamışsınızdır ben java uygulamaları geliştirirken eclipse ortamını kullanıyorum. Benim tecrübemdeki Java geliştiricilerine göre Eclipse ortamının hakkını verdiğimide rahatlıkla söyleyebilirim. Fakat eclipse ortamını kendim için nasıl özelleştirdiğim tamamen ayrı bir yazının konusu.

Maven aracının bana sağladığı en güzel özelliklerden biri Javadoc ve kaynak dosyalarını indirebilmesi. Ben bunu sadece kendim için değil, tüm takım arkadaşlarım için istiyorum. Bir arkadaşımla kodun üzerinden geçerken Javadoc ve kaynak dosyalarının olmaması hiç hoşuma gitmiyor. İşte tam bu noktada bu eklenti imdadıma yetişiyor.

Kullanım

Maven Eclipse eklentisini kullanmak için, eklentinizi <build> etiketinin altındaki, <plugins> etiketinin altına <plugin> etiketi  yerleştirmeniz gerekmektedir. Benim kullandığım şekliyle eklentinin örneği aşağıda mevcuttur.

pom.xml

<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<downloadJavadocs>true</downloadJavadocs>
<downloadSources>true</downloadSources>
</configuration>
</plugin>

maven-surefire-plugin

Tanım

Eğer Maven kullanıyorsanız, bu zamana kadar zaten Maven aracının sizin için Testlerinizi otomatik olarak yaptığını biliyorsunuzdur. İşte maven bu testleri Surefire eklentisi üzerinden yapıyor. Fakat gel gelelim ki bu testler her zaman güzel yazılmış olmayabiliyor. Örneğin veritabanına erişim için yazılan sınıfların testleri genelde bir ya da iki revision sonra çalışmaz hale geliyor. Türkiyedeki yazılım kalitesi göz önüne alındığında, unit testlerin yazılmış olması bile bir gelişmişlik göstergesi olduğundan, bu testlerin kalitesini düşünmek biraz lükse kaçıyor.

Fakat bir iki revison sonra çalışmaz hale gelen testler, projenizi derlerken başınızı ağrıtıyor. Çünkü normal şartlarda maven tüm testlerin olumlu sonuçlanmasını bekliyor. Aksi halde hata ile karşılaşıldı mesajı ile karşı karşıya kalıyorsunuz.

Kullanım

Ben testler yapılırken hata ile karşılaşılsa bile testlerin çalışmasının devam etmesini istiyorum. Bunun için bu eklentiyi aşağıdaki şekilde kullanıyorum.

pom.xml

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>

wagon-file

Tanım

Wagon-File eklentisi, eklentiden çok özellik niteliğinde. Zaten Wagon-File eklentisinin kullanımı kısmında sizde bu farkı hissedeceksiniz. Genel olarka bir dosyayı ya da klasörü başka bir lokasyona kopyalamak için kullanılıyor. Wagon eklenti ailesinin genel olarak yaptığı işlemde budır. Belirli bir klasörü başka bir yere yüklerler. Bundan dolay Wagon eklentileri build zamanının sonuna doğru deploy zamanında çalışırlar.

Kullanım

Bu eklentiyi, <build> etiketinin altındaki <extensions> etiketinin altına <extension> etiketi ile tanımlıyoruz. Fakat bu eklenti yükleme zamanında çalışacağı için ayrıca, <distributionManagement> etiketi altınada tanımlamalar yapmanız gerekiyor.  Ben genel olarak site:deploy altında kullandığımdan <site> etiketi altına file özelliğini kullanarak url tanımlıyorum.

pom.xml

<build>
...
<extensions>
<!-- Enabling the use of Wagon file -->
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId>
<version>1.0-beta-6</version>
</extension>
</extensions>
...
</build>
...
<distributionManagement>
<site>
<id>main</id>
<url>file:${project.basedir}/site/</url>
</site>
</distributionManagement>

axis2-aar-maven-plugin

Tanımı

Genel olarak çalıştığım şirkette web servislerini ben yazıyorum. Yine genel olarak web servisleri geliştirirken Axis2 teknolojisini kullanıyoruz. Axis2 projesini geliştirirken dinamik web uygulaması gibi geliştiriyorum. Bu sebeptende maven altında WAR olarak paketlenmesi gerektiğini belirtiyorum. Fakat bu her zaman yeterli olmuyor. Bazen “production” ortamında çalışan sisteme ek web servisleri yazılıyor. Bu sefer proje WAR olarak yüklenmek istenmiyor. Bunun yerine AAR olarak yüklemek tercih ediliyor. İşte bu eklenti AAR arşiv dosayasını benim için otomatik olarak oluşturuyor.

Kullanım

Daha önce Anlattığım Axis2 ve Maven Uymu yazımda kullandığım şekliye belirteceğim. Bu eklentiyi kurmak için tek yapmanız gereken services.xml dosyasının yolunu eklenti içerisinde belirtmenizdir.

pom.xml

<plugins>
<plugin>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-aar-maven-plugin</artifactId>
<version>1.4.1</version>
<configuration>
<servicesXmlFile>
src/main/webapp/WEB-INF/services/SimpleService/META-INF/services.xml</servicesXmlFile>
</configuration>
</plugin>

Diger Eklentiler

Tabikide maven altında çalışan tüm build ve test eklentileri bu kadar değil. Daha bir çokları maven sitesinde mevcut. Merak edenler aşağıdaki iki sayfayı ziyaret edip diğer maven eklentilerinide öğrenebilir.

End Of Line