Monday, January 14, 2013

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.

Monday, November 5, 2012

Debian'a JDK 7 yüklemenin yolu

Bu yazıda Linux işletim sisteminize el yordamıyla herhangi bir runtime yükleme ve update-alternatives komutuyla sistem varsayılanı olarak ayarlamayı anlatacağım; özellikle resmi depolarda henüz bulunmamasından dolayı Debian'a JDK 7 yükleme örneğiyle anlatıyorum. Genelleştirip başka ihtiyaçlarınıza da uyarlayabilirsiniz.

Öncelikle wget kullanarak sıkıştırılmış tar dosyayı Oracle'ın sitesinden yükleyelim ve uygun klasöre açalım. Henüz JDK 7 için Debian depolarında resmi paket yok, bu yüzden paket yöneticisini (apt-get komutunu) kullanamıyoruz.

wget http://download.oracle.com/otn-pub/java/jdk/7u9-b05/jdk-7u9-linux-x64.tar.gz
tar zxvf jdk-7u9-linux-x64.tar.gz -C /usr/lib64/jvm/

Verdiğim link 64-bit Linux için son JDK'yı gösteriyor. Bu işe yaramazsa doğrusunu Oracle'ın sayfasına gidip bulabilirsiniz; her halükarda son versiyonunu tespit etmek için:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Şimdi istediğimiz JDK'yı indirip doğru bir klasöre açtığımıza göre update-altenatives marifetiyle sistem varsayılanı olarak ayarlayalım.

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_09/bin/java 1065
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_09/bin/javac 1065

1065 rakamı verilen önceliği ifade ediyor.

İşlemi kontrol etmek için –config parametresini kullanabilirsiniz.

update-alternatives --config java

Bu komutu girdiğinizde eğer önceden yüklenmiş bir Java'nız da vardıysa şuna benzer birkaç satır görmelisiniz, eğer ilk java ise alternatifi olmadığını bildirecektir:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/jdk1.7.0_09/bin/java          1065      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/jdk1.7.0_09/bin/java          1065      manual mode

Verdiğimiz 1065 rakamı 1061 den yüksek olduğundan kurduğumuz java otomatik olarak seçiliyor. Şimdi  artık yeni alternatifin etkinleştiğini görebiliriz.

java -version

Çıktısı:

java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

Kolay gelsin...

Monday, May 28, 2012

Java ve SSL Güvenilmeyen Sertifika

SSL sertifikası güvenilmemiş olan bir sunucuya erişmek istediğinizde aşağıdaki hatalardan (orj. exception) biri ile karşılaşabilirsiniz:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


Bu hatalar sertifikanızın geçerliliğinin kullandığınız Java runtime tarafından doğrulanamamasından kaynaklanıyor. Ağ tarayıcıları benzer durum ile karşılaşıldığında çoğu kere uyarı vermekle beraber, size sertifikaya güvenip devam etme veya güvenilir listesine ekleme seçenekleri de sunarlar. Bizim durumumuzda devam edebilmek için keytool aracını kullanarak Javanın keystore una bu sertifikayı güvenilir olarak eklememiz icab ediyor.


keytool aracı Java JDK nızın bin klasöründedir. keytool u bulduktan sonra şu adımları izleyin:

  • Sertifikayı local bir yere karşıdan yükleyin.
  • keystore a şu parametreler ile sertifikayı ekleyin:
    keytool -keystore ..\jre\lib\security\cacerts -import -alias <tanım_girin> -file c:\<dosya_yolu>\sertifika.crt -trustcacerts
    veya
    keytool -keystore ../jre/lib/security/cacerts -import -alias <tanım_girin> -file ~/<dosya_yolu>/sertifika.crt -trustcacerts
Varsayılan keystore şifresi changeit dir.

Adımları doğru olarak tamamladıysanız sizi şöyle tasdik edecektir: "Certificate was added to keystore."


Bazı ipuçları:

Keystore daki tüm sertifikaları listelemek için:
keytool -list -keystore ..\jre\lib\security\cacerts
Keystore dan sertifika silmek için:
keytool -delete -alias certalias -keystore ..\jre\lib\security\cacerts