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