14 Ocak 2013 Pazartesi

Maven deposuna basit ve sıradan Jarları eklemek

Örnek olarak; Eclipse veya Netbeans ile başladığınız projenizi Maven projesine dönüştürmek istiyorsunuz. Veya zaten Maven temelli olan projenize üçüncü parti sıradan bir .jar dosyası eklemeniz gerekiyor. Gel görelim Maven bazlı projenizde kullanmayı düşündüğünüz API veya kütüphaneye ait jar herhangi bir Maven deposunda (orj. repository) mevcut değil...

Bu durumda jarlarınızı projenize (önceden yaptığınız gibi) kullandığınız IDE 'nin kendi imkanlarıyla eklemeyi düşünebilirsiniz. Yada, lokal Maven deponuza ekleyip normal bir Maven tabiyeti (orj. dependancy) ile olduğu gibi pom.xml 'inize bir tabiyet kaydı girerek ekleyebilirsiniz. İkinci yolu tercih etmenizin birtakım faydaları sayalım.


 - Örneğin clean veya (Eclipse eklentisi ile gelen) eclipse:eclipse gibi Maven gollerini (orj. goal)  her çalıştırdığınızda / çağırdığınızda pom.xml dosyanızda kaydı bulunmayan jarların kaldırılması problemiyle karşılaşmazsınız.
 - Ortak kullanıma yönelik jarlarınızı merkezi bir depoda tutmak derlilik açısından daha profesyonel olur.
 - Modüler bir yapıya kavuşan projenizde her yeni modül için aynı jarları tekrar tekrar eklemek gerekmez çünkü artık veli (orj. parent) projenizde o tabiyet mevcut ve çocuk projeleriniz ondan faydalanabilir.
Gibi şeyler şuanda aklıma gelenler.


Nasılına gelecek olursak; çalıştıracağımız konsol komutu mvn şöyle:
mvn install:install-file -Dfile=<dosya-tam-adı> -DgroupId=<grup-id> -DartifactId=<yapıt-id> -Dversion=<versiyon> -Dpackaging=<packaging>

Örneğin komutun son hali Windows tabanlı bir sistemde şöyle olabilir:
mvn install:install-file -Dfile=C:\acayip-api.jar -DgroupId=net.dkyc.api -artifactId=Acayip -Dversion=1.0.0.2 -Dpackaging=JAR
Jarımızı Maven depomuza başarıyla ekledikten sonra tabiyet kayıtlarımıza da ekliyerek projemize eklemiş olacağız. Bundan sonraki projelerimizde bu jarın nerede olduğunu bile hatırlamanıza gerek yok. Sadece POM 'unuza (Project Object Model) yukarıdaki örnek için şu satırları ekleyin:

<dependencies>
<dependency>
<groupId>net.dkyc.api</groupId>
<artifactId>acayip</artifactId>
<version>1.0.0.2</version>
</dependency>
</dependencies>

Bir sonraki eclipse:eclipse çalıştırmanızda ilgili jar(lar) IDE'nize de eklenecek. Benzer durum tüm Maven destekliyen IDEler için geçerli.


Kolay gelsin.