Jun 26

MavenMaven adını yavaş yavaş duyurmaya başlayan bir Java Deployment Tool’dur.

Çoğu Java Projeleri Ant Tool kullanılarak otomatik deployment sağlanmaktadır. Ve Ant java geliştiricileri arasında bir standard(de facto) haline gelmiştir. Hatta Netbeans kendi projelerini Ant Script olarak hazırlamaktadır. Fakat gün geçtikçe Ant’in Proje Geliştirme Sürecinde yetersiz kaldığı alanlar ön plana çıktı. Mesela Ant proje ile ilgili Meta Datalar içermiyordu ve çok uzun kod yazmanız gerekiyordu. İşte bu ihtiyaçtan dolayı Maven ortaya çıktı.

Başta da dediğim gibi Maven Ant gibi bir Java Deployment Tool’dur. Maven ile Ant’in yapabileceği herşeyi yapabilirsiniz ve hatta artıları da var.

Maven Amacı

  • Proje geliştirme işlemini kolaylaştırmak.
  • Kaliteli proje bilgisi sağlamak.
  • Düzenli bir geliştirme sistemi sağlamak.
  • Tam ve dikkatli test etme pratiği sağlamak.
  • Yeni niteliklere saydam bir geçiş sağlamak.

Maven’ı http://maven.apache.org/download.html adresinden indirebilirsiniz. İndirdiğiniz sıkıştırılmış dosyayı C:/maven olacak şekilde açınız. Aynı Java’da olduğu gibi burada da Path ayarları yapmamız gerekecek. C:/maven/bin klasörünü Path değişkeni içerisine koymamız gerekecek. Kurulumumuzu tamamladık.

mvn –version

diyerek maven kurulumunu kontrol edelim. Ekrana Maven versiyonunu basması gerekecek.

Şimdi basit bir proje oluşturalım. Projemizin adı javaciMaven ve paketi ise net.javaci olsun. Aşağıdaki komutu kullanarak Maven bizim için otomatik proje yapısını oluşturacaktır.

mvn archetype:create -DgroupId=net.javaci -DartifactId=javaciMaven

Burada -DgroupId ile ana paket adını, -DartifactId ise proje adını belirtir. Yukarıdaki komutu çalıştırdığımız zaman proje isminde bir klasörün oluştuğunu göreceğiz.

Maven’ın standard bir klasör yapısı vardır.

src/main/java dizini Java kaynak dosyalarını, src/test/java test kaynak dosyalarını içerir. pom.xml ise Maven’ın proje yönetim dosyasıdır. pom(Project Object Model) dosyası sayesinde sadece birkaç satırlar proje build işlemimizi yapabiliriz.

pom.xml içeriği aşağıdaki gibi olacaktır.

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

Maven geliştirme süreci birkaç aşamadan oluşur. Bunlardan bazıları;

mvn compile: proje dosyalarını compile eder.
mvn test: src/test/java klasörü altındaki test dosyalarını çalıştırır.
mvn package: compile edilmiş kodu Jar olarak paketler.
mvn install: projenin bağlı olduğu kütüphaneleri indirir.

mvn package

diyerek projeminizi deploy edelim.

java -cp target/javaciMaven-1.0-SNAPSHOT.jar net.javaci.App

komutuyla projemizi çalıştıralım.

Maven’ın en güzel yönü uyguladığımız projelerde Continous Integration‘ı kolayca uygulayabiliyor olabilmemiz. Bunun için Hudson veya Team City gibi araçları kullanabilirsiniz.

yazan ekocaman

May 01

Eskiden bir bilim dalı olarak kabul edilmeyen Yazılım Mühendiliği gün geçtikçe kendini bu kalıba sığdırmak için çeşitli bilgiler geliştirmekte. CMMI, SPICE, Agile Development gibi yöntemlerle de Yazılım Mühendiliğinin bir disiplini olduğunu bize çok açık belirtmektedir. Acaba biz geliştirme süreçlerimize ne kadar bir disiplin uygulayabiliyoruz. Bunu 12 aşamada kendimizi test ederek görebiliriz.

1. Kaynak kodu kontrol sistemi kullanıyor musunuz?
2. Tek bir adımda sistemi oluşturabiliyor musunuz?
3. Sistem oluşturma (build) işlemi günlük yapılıyor mu?
4. Hata veritabanınız var mı?
5. Yeni bir kod yazmadan önce hataları düzeltiyor musunuz?
6. Güncel iş takviminiz var mı?
7. İş tanımlamalarınız var mı?
8. Programcıların sakin bir çalışma ortamı var mı?
9. Paranın alabileceği en iyi araçları kullanıyor musunuz?
10. Test elemanınız var mı?
11. İş görüşmelerinde adaylara kod yazdırılıyor mu?
12. Koridor kullanım testi yapıyor musunuz?

Bu sorulara cevap olarak EVET veya HAYIR verilecektir. Her EVET cevabı 1 puan demektir. İyi bir yazılım geliştirmek istiyorsanız buradan en az 10 puan almanız gerekecektir. Tabiki Türkiye’de durum biraz farklı. Bunun nedeni de bir ekibin değilde kişilerin projelerin başarısında öneminin büyük olmasıdır. Mesela benim çalıştığım firmaya bu testi uyguladığım zaman 8-9 gibi bir puan alabiliyorum.

Gerekli bilgiyi adresinden bulabilirsiniz.

yazan ekocaman