Groovy ve Maven

Groovy dilini nasıl kullanabileceğimize ilişkin girişimizi yaptık. Fakat ben hala kendimi groovy kullanırken rahat hissedemiyorum. Az kod yazıyor olmak mı yoksa script yazıyor olmak mı beni rahatsız ediyor daha tam anlayamadım. Dilin kendi özelliklerini, yazım şekillerini incelemeden önce Groovy projelerini daha alışık olduğum bir formata çevireceğim. Böylelikle dile biraz daha aşina olmayı hedefliyorum. Ne kadar işe yaradığını ileride göreceğiz.

Groovy

Şu bahsettiğim daha alışık olduğum proje yapısı Maven proje yapısı. Biliyorum groovy ile birlikte gelen başka özellikler var ve bu özellikler maven kullanmayı azaltacak türde özellikle ama dediğim gibi daha alışık olduğum ortamlarda çalışmak istiyorum. Bunun için maven ve groovy’nin nasıl birlikte kullanılacağına bakacağım. Temelden başlayıp kendi kütüphanemi nasıl oluşturacağımı inceleyeceğim.

Hazırlık

Başlamadan önce sisteminizde Maven ve Groovy’nin kurulu olması gerekiyor.  Eğer daha önce Groovy kurulumunu gerçekleştirmediyseniz buradan yararlanabilirsiniz. Eğer daha önce maven kullanmadıysanız ve kullanmayı düşünmediyseniz bu yazıyı geçebilirsiniz.

Her sıfırdan maven projesi kurarken olduğu gibi burada da bir Archetype arayarak başladım işe. Archetype’lar bildiğiniz üzere sizin için hazırlanmış olan proje yapıları. Bunları Eclipse’teki DynamicWebProject gibi genel proje yapıları gibi düşünmeyin. Archetype’lar size sadece projeyi hazırlamakla kalmaz, kullanacağınız temel sınıfları da oluşturur. Örneğin Wicket archetype’ı sizin için Wicket Application sınıfından tutunda örnek bir sayfaya kadar herşeyi hazırlar. Ya da Spring+JSF arche type’ı size örnek JPA ayarlarını, örnek bir Entity sınıfını, DAO ve Service sınıflarını ve bunların xml dosyaları içerisinde ayarları yapar ve o şekilde bir proje sunar.

Proje

Groovy’e yeni başladığımız için bu kadar kapsamlı bir Archetype sadece kafamızı karıştıracaktır. Bu sebepten ben maven depolarında yayımlanan en temel Groovy archetype’ını kullanacağım. Kullandığım arhcetype’ın özellikleri aşağıdaki gibidir.

  • mavenGroupId: org.codehaus.gmaven.archetypes
  • ArtifactId: gmaven-archetype-basic

Bu bilgileri kullanarak ister Eclipse üzerinden ister komut satırından projemizi yaratıyoruz. Benim tercihim komut satırını kullanmaktan yana. Bunu için aşağıdaki komutu çalıştırıyorum.


mvn archetype:generate -DarchetypeArtifactId=gmaven-archetype-basic -DarchetypeGroupId=org.codehaus.gmaven.archetypes

Komutu çalıştırdıktan sonra oluşturacağımız projeye ilişkin GroupId, ArtifactId ve Package bilgilerini aşağıdaki gibi dolduruyoruz.

  • GroupId: com.bahadirakin
  • ArtifactId: groovy-basic
  • Package: com.bahadirakin.groovy

Projemizi yaratıığımızda java’dan alışık olduğumuzdan biraz farklı olduğunu görüyoruz.

  • src/main/groovy: Groovy ve Java kaynak kodları bu dosyada yer alıyor. Şimdi bu kısımla uğraşmıyorum ama ileride groovy ile gerçek bir proje oluşturmaya başladığımda, Java kodlarını bu klasör yerine src/main/java klasöründe tutmaya özen göstereceğim.
  • src/test/groovy: Yine aynı şekilde Groovy ve Java kaynak kodları burada bulunuyor. Tabi burada tutulan dosyalar sadece Test amaçlı dosyalar.

Derleme

Buradan sonra projeyi mvn clean install ile derliyoruz.  Bu komut bizim için eski build’leri temizleyip yeni bir derlemeye başlatacak. Derlemnin ardından oluşan Artifact’i alıp lokal maven deposuna yükleyecek.

Burada bu komutu çalıştırdığınızda Hata verecektir.

Bana göre bu Archetpye üzerindeki bir hatandan kaynaklanmaktadır. Bunun için yapnanız gereken iki şey bulunmaktadır.

Hatanın Düzeltilmesi

Ne yazık ki bu archetype içerisinde olması gereken en temel kütüphane eksik. Bu kütüphaneyi eklemek için projenize aşağıdaki bağımlılığı eklemelisiniz.

pom.xml


<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.1.3</version>
</dependency>

Bu değişikliklerden sonra projenizi bir daha mvn clean install ile derlediğinizde sorunun kalktığını göreceksiniz.

Son

Projemizi başarı ile derlediğimize göre artık istediğimiz geliştirme ortamına yükleyebilirsiniz. Eclipse ortamı için mvn eclipse:eclipse komutunu Intelij Idea için mvn idea:idea komutunu kullanabilirsiniz. Unutmayın projenizi ilgili geliştirme oratamına yüklerken Groovy özelliğini kendiniz vermeniz gerekebilir.

End Of Line