Wicket ve Maven

Wicket gördüğüm en iyi framworklerden biri. Fakat yeni başlayan biri için kurulumu ve anlaşılması oldukça zor. Yanlış anlaşılmasının bunu, kaynaklarının zayıf olduğunu ima ederek söylemiyorum. Wicket kaynakları açısından da gayet başarılı bir framework. Wicket dağıtımını sitesinden indirdiğinizde, paket içerisinde gelen örnekler bile çoğu durum için yeterli oluyor. Yinede daha önce hiç web projesi yapmamış biri için sıfırdan başlamak zor olabiliyor. İşte maven bu sorunları ortadan kaldırıyor. Sadece wicket için değil başka bir çok faramework ve araçlar için işinizi çok kolaylaştırıyor.

Maven Nedir?

Maven bir derleme(build) aracı, yani sizin için istediğiniz şekilde projenizi derlemenize ve istediğiniz çıktıları almanıza olanak sağlıyor. Aynı Ant gibi yani. Fakat esas farkını diğer kısımlarında belli ediyor.

  • Projenizin bağımlılıkları temiz bir ÅŸekilde görülebildiÄŸi gibi, istediÄŸiniz kaynak kodu depolarından istediÄŸiniz kütüphaneleri kolaylıkla ekleyebiliyorsunuz.
  • Kaynak kodlarınız için temiz bir dosya hiyerarÅŸisi tutuyor. Bu sayede kolaylıkla neyin nerede olması gerektiÄŸine kararverebiliyorsunuz. Genelde bu standart olduÄŸu için, maven kullanarak hazırlanmış baÅŸka projeleride okumanız kolaylaşıyor.
  • Maven derlerken esnek bir yapı kullanıyor. Bu sayede istediÄŸiniz maven eklentilerini kullanarak derleme iÅŸlemini esnekleÅŸtirebiliyorsunuz. Aynı zamanda isterseniz Ant scriptlerinide kullanabiliyorsunuz.
  • Size projenizi takip etmenizi saÄŸlayan sunucular ve sorunlarınızı takip etmenize yardımcı olan sistemlerle de uyumlu bir ÅŸekilde çalışmakta

Bu özelliklerin çoğu için proje sırasında emek ve zaman harcanmakta. Maven bu zamanı size kazandırdığı gibi içinde bulundurduğu özelleştirilmiş proje yapıları ile projelere başlamanızı kolaylaştırmaktadır. İşte tam bu özelliği bu yazının konusu olacaktır.

Fakat özelleştirilmiş proje yapılarının ne olduğuna geçmeden önce maven kurulumuna ve mavenin eclipse ile entegre edilmesine bir bakalım.

Maven Kurulumu ve Eclipse

  • Öncelikle maven’ indiriyoruz. Bunun için aÅŸağıdaki linkten kendinize uygun olan binary dağıtımı indiriniz.
    http://maven.apache.org/download.html
  • İndirdiÄŸiniz dağıtımı sizin için uygun olan bir yere çıkartın.
  • Çıkarma iÅŸlemi baÅŸarıyla bittiÄŸinde, klasörün içerisindeki bin klasörünün yolunu sistem yolunuza ekleyin.
  • Daha sonra komut satırından “mvn –version” komutu ile çalışıp çalışmadığını kontrol edebilirsiniz.
  • Daha ayrıntılı bilgi için, maveni indirdiÄŸiniz sayfasında alt tarafları kontrol edebilirsiniz.

Kurulumu anlatmış olmama rağmen, uzun uzun mavenin nasıl kullanılacağını anlatmayacağım. Kısaca her maven projesi içerisinde pom.xml isminde bir dosya bulunur. Maven ile ilgili porje bazlı tüm ayarlarınızı bu dosya üzerinden gerçekleştirirsiniz. Bağımlılıklarınızdan tutunda, derleme seçeneklerinize kadar herşey bu dosyanın içerisindedir. Biz genelde Eclipse eklentisi kullanacağımızdan çok falza bu dosya ile ilgilenmeyeceğiz.

Eclipse için m2Eclipse eklentisi kullanılıyor. Bunu doÄŸrudan Market Place’ten indirebileceÄŸiniz gibi, Indigo ile birlikte doÄŸrudan Eclipse Update linkinden de indirebilirsiniz. Bunuda kurduktan sonra artık özelleÅŸtirilmiÅŸ projeler yaratmaya hazırız.

Maven ve Özellestirilmis Projeler

Nasıl ki eclipse içerisinde Dynamice Web projesinden tutunda çeşit çeşit başka projeler yaratabiliyorsunuz maven ile de projeler belirlemeniz mümkün. Aslında bunlara proje demem çokta mantıklı değil. Örneğin bir wicket projesi yaratmak istiyorsanız, size wicket, log4net, jetty ve junit kurulu bir şekilde bir java projesi yaratıyor. Tabi bunları tek tek kurmak çalıştırmak ve test etmek zahmetli bir iş.

Maven beraberinden bir sürü proje ile geliyor. Bunların bazılarının adlarını duymadığımı farketmek beni üzsede genel olarak bilindik projeler de var. Biz ise bu yazı içerisinde güncel bir proje kuracağız.

Wicket ve Maven

Öncelikle Eclipse altından bir maven projesi oluÅŸturarak baÅŸlıyoruz. ilk ekrandaki bilgilere dokunmadan next dediÄŸimizde bize ne tür bir Archetpye kullanmak istediÄŸimizi soran bir ekran ile karşılaşıyoruz. Burda ne tür projeler olduÄŸunu inceleyebilirsiniz. Aynı zamanda genellikle maven-archetype-quickstart seçili olur. Fakat bizim wicket ile ilgili bir archetype’a yani özelleÅŸtirilmiÅŸ yapıya ihtiyacımız var. Bunun için Add Archetype… butonu ile yeni bir archetype ekliyoruz.

  • Group ID: org.apache.wicket
  • Artifact ID: wicket-archetype-quickstart
  • Version: 1.5.4
  • URL: https://repository.apache.org/

Yukarıdaki bilgileri girdiÄŸinizde yeni archetype’ınızını eklemiÅŸ olacaksınız. Fakat ekleme sırasında hata ile karşılaşırsanız ya da daha güncel bir archetype’a ihtiyacınız olursa Wicket sitesini ziyaret edebilirsiniz.

Sonraki ekranda ise size projeniz ile ilgili bilgiler sorulacaktır. Projenize ait Group ID‘si projenizin paket adının temelini oluÅŸturmaktadır. ÖrneÄŸin ben Bits Bilgisayar için çalışıyorum ve ÅŸirkette paket adları için com.bits ön ekini kullanırız. Yani bu ön ek alında gruplanırız. Artifact Id ise projenin adının ne olduÄŸu bilgisidir. Eclipse içinde gösterilecek proje adı buradan alınacaktır. Versiyon ise zaten adından anlaşıldığı için ayrıntıya gerek yok. Bunları burada girerken tereddüt etmeyin, çünkü istediÄŸiniz takdirde pom.xml dosyası içerisinde deÄŸiÅŸtirebilirsiniz.

Yukarıda gösterilen şekilde projenizi oluşturduğunuzda ise size aşağıdaki dosya yapısına sahip bir proje oluşturacaktır. İlk projeniz ise oluşturulması biraz uzun sürebilir. Bunun sebebi maven porje bağımlılıklarını indirecektir. İndirdiği bu bağımlılıklar .m2 adlı bir klasörde tutulmaktadır. Böylelikle projeyi başkasına verirken ya da versiyonlama sisteminize yüklerken bağımlılıkların yüklenmesini beklemeyeceksiniz.

Burada projeniz için gerekli olabilecek her dosya yaratılmış durumda. Sizin tek yapmanız gereken doÄŸru yaratılıp yaratılmadığını kontrol etmek adına Start.java dosyasını çalıştırmak. Çalıştırdığınızda ve localhost:8080 adresine girdiÄŸinzide Wicket projenizin baÅŸarıyla baÅŸladığını göreceksiniz. Bundan sonra istediÄŸiniz ÅŸekilde deÄŸiÅŸiklikler yapabilir ve Wicket’a sinir olmadan baÅŸlayabilirsiniz.

Tomcat vs Jetty

Wicket kullanan herkese projelerini bu ÅŸekilde gerçeklemelerini tavsiye ediyorum. Fakat herkesin tereddüt ettiÄŸi kısım Tomcat’i bırakma kısmı oluyor. Normal ÅŸartlarda Java’da çalışan ya da çalışmaya yeni baÅŸlayan kiÅŸilere Tomcat önerilir. Aslında tomcat’in baÅŸarısı düşünüldüğünde bu doÄŸru bir seçimdir.

Fakat genellikle kimse tomcat üzerinde ayar yapmaz olduÄŸu gibi alır ve kullanmaya baÅŸlar. Ufak projeler için bu sorun olmazken projeniz büyüdüğünde bu soruna yol açacaktır. Projeniz büyüdüğünde tomcat 20.000 milisaniye baÅŸladığında kendinizi ÅŸanslı hissetmeye baÅŸlıyorsunuz. Oysaki bu durum Jetty’de 300 milisaniyeyi geçmiyor. İşinize yaramayan hiç bir ÅŸeyi yüklemiyorsunuz.

Tabi bu bahsettiÄŸim geliÅŸtirme ortamınız için geçerli. Üretim kısmınızda jetty kullanmanın ne kadar doÄŸru olduÄŸunu bilmiyorum. Çünkü daha hiç Tomcat’i bırakacak kadar güvenli hissetmedim kendimi.

Maven’in güzel yanı sizin için projenizi paketleyip .war formatına getiriyor. Bu sayede, üretim ortamınızdaki tomcat’i deÄŸiÅŸtirmeniz gerekmiyor. Ayrıca dikkatinizi çekmek istediÄŸim bir diÄŸer kısımsa, projenizi maven ile geliÅŸtirip sonra tomcat’e yüklediÄŸiniz de, tomcat ile geliÅŸtirip yüklediÄŸinizden daha hızlı açılmaktadır. Bu biraz garip gelebilir fakat bir deneyip kendi gözünüzle görmenizde fayda var derim.

Kaynaklar

End Of Line