14 Ağustos 2007

Maven nedir?

Java ile proje geliştirmede kullanılan "Maven" için çok yararlı bir araç deniliyor. "Ant"'a alternatif olarak gösterilen ve kullanımı daha kolay olan "Maven"'in özelliklerini bildiğim kadarıyla özetleyeyim. Maven, Ant gibi bir "Java Deployment Tool", yani java projelerinin oluşturulmasından dökümantasyonuna kadar olan genel geliştirme aşamalarını standart hale getirip kolaylaştıran bir araçtır.

Ant'ın, proje ile ilgili üst bilgi (Meta Data) içermemesi ve uzun kodlar yazmayı gerektirmesi gibi nedenler Maven'in ortaya çıkmasına neden oldu. Maven ile Ant’in yapabileceği herşey yapılabilir.

Proje geliştirme aşamalarını kolaylaştıran Maven şu aşamalardaki yönetimi ile kolaylıklar getirir:

* Kurulum
* Dökümantasyon
* Raporlama
* Bağımlı kaynaklar
* SCM (Software Configuration Management)
* Sürümler
* Dağıtımlar

Maven Amacı

* Proje geliştirme işlemini kolaylaştırmak.
* Kaliteli proje bilgisi sağlamak.
* Düzenli bir geliştirme sistemi sağlamak.
* Tam ve dikkatli test etme pratiği sağlamak.
* Yeni niteliklere saydam bir geçiş sağlamak.


Maven'in çalışma mantığı Project Object Model (POM) adı verilen ve maven ile projeyi yarattığınızda oluşan .xml dosyasıdır. Proje ile ilgili önemli bilgileri bu dosya içerir. Örnek bir POM dosyası şu şekildedir:



Maven ile oluşturulan yeni bir projenin klasör yapısı kendiliğinden oluşur.
Aşağıda proje oluşturma komutu ve oluşan klasör yapısı görülmektedir.

mvn archetype:create \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DgroupId=com.mycompany.app \ -DartifactId=my-app




Maven geliştirme süreci birkaç aşamadan oluşur. Bunlardan bazıları;

mvn compile: proje dosyalarını derler.
mvn test: src/test/java klasörü altındaki test dosyalarını çalıştırır.
mvn package: derlenmiş kodu Jar(war,ear) olarak paketler.
mvn install: projenin bağlı olduğu kütüphaneleri indirir.
mvn site: ek bir bilgi istemeden, POM daki bilgilere göre projenin web sitesini oluşturur.



Kaynaklar:

http://www.javaci.net/2007/06/26/maven-2/
http://maven.apache.org/guides/getting-started/index.html



Hiç yorum yok: