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.
Åž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.
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