27 Temmuz 2017 Perşembe

Maven nedir ve nasıl kullanılır ?

Maven nedir?


Maven ; proje adımlarını basitleştirmek, etkili bir belgelemelendirme ve bağımlılıkları ortadan kaldırmaya yarayan bir Java geliştirme aracıdır. 

Kurulumu oldukça kolaydır. Proje kalıpları standart haline getirilmiştir  ve böylece tüm IDE'ler destek vermektedir.


Projedeki tüm bağımlılıklar POM adı verilen bir xml dosyası altında toplanmıştır. Bu dosyaya yazılan kütüphaneler eğer yerel depomuzda yoksa ilgili Maven depolarından indirilir. 

Gereksinimler 

  • JDK 1.7+


Kurulum


Maven dosyalarını şu adresten indirelim.

JAVA_HOME çevresel değişkeninin bu komutu çalıştırarak JDK 'yı gösterdiğine emin olalım.


echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/

İndirdiğiniz dosya formatına göre aşağıdaki komutlardan birini çalıştırınız. 


unzip apache-maven-3.5.0-bin.zip
tar xzvf apache-maven-3.5.0-bin.tar.gz

Oluşan apache-maven-3.5.0 dizinindeki bin dosyasını PATH çevresel değişkenine ekleyelim ki maven dizinimiz işletim sistemi tarafından bilinsin.



export M2_HOME=/usr/local/apache-maven/apache-maven-3.3.9 
export M2=$M2_HOME/bin 
export PATH=$M2:$PATH

sonrasında şu komutla kurulumu onaylayın.



mvn -v

çıktımız buna benzer bir şey olacak. 



Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
Maven home: /home/emre/apache-maven-3.5.0 
Java version: 1.8.0_141, vendor: Oracle Corporation 
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux", version: "3.10.0-514.26.2.el7.x86_64", arch: "amd64", family: "unix"

Proje oluşturma
Aşağıdaki komutla örnek bir proje oluşturalım.

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

komutuyla örnek bir proje oluşturabilirsiniz. İlk kurulum olduğu için biraz vakit alacak çünkü Maven bazı temel şeyleri yerel depomuza indirecek.

Az önce -DartifactId e atadığımız değerle aynı klasör oluştu(my-app). 



my-app/
 ├── pom.xml
 └── src
     ├── main
     │   └── java
     │       └── com
     │           └── mycompany
     │               └── app 
     │                   └── App.java 
     └── test 
         └── java 
             └── com 
                 └── mycompany 
                     └── app 
                         └── AppTest.java

my-app/src/main/java dizini projenin kaynak kodunu,
my-app/test/java ise test kodunu içeriyor.

Ve bir de pom.xml dosyamız var. Bu dosya da Proje nesne modeli(Project Object Model) anlamına geliyor. Projenin ayarlarını içeren geniş bir dosya.



<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/maven-v4_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>my-app</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>

Bu ise az önce oluşturduğumuz, Maven'in bize sunduğu basit bir prototip, archetype:generate. 

<project> : Maven'in hangi versiyonlarının kullanılacağının belirtildiği kısım. 
<modelVersion> : POM model versiyonu.
<groupId> : Projenin ait olduğu grup veya kuruluş. 
<artifactId> : Projenin kitaplık eserine (JAR ve WAR dosyasının adı) verilecek ad
<version> : Yapım aşamasındaki projemizin versiyonu.
<packaging> : Projenin hangi formatda paketlenmesi gerektiğini belirtir. Varsayılan JAR'dır. WAR paketleme için değeri war dır.
<url>: Projemizi deploy etmek istediğimizde kullanılacak adres.
<dependencies> : Projemizde kullanmak istediğimiz tüm bağımlıkların eklendiği kısım. 
<scope> : Projenin hangi yapılandırmayı kullanacağının belirtildiği kısım.

Projeyi kurmaProjemizi oluşturduk. Şimdi bunu kurulabilir(çalıştırılabilir) bir paket dosyası haline getirelim.



mvn package
Bu komut sonrasında pom.xml de belirtilen dosyalar indiriliyor ve bir jar dosyası olarak paketleniyor. 

Çıktı şu şekilde sona eriyor.



[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 16.272 s [INFO] Finished at: 2017-07-26T14:40:54Z
[INFO] Final Memory: 17M/41M 
[INFO] ------------------------------------------------------------------------

Şimdi jar paketinin test edebilim.



java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

çıktımız ;



Hello World!


Yukarıda kullandığımız mvn package komutundaki package gibi komutlara lifecycle diyoruz. 

İşte bunlardan bazıları ;

clean: Proje derlendikten sonra oluşan target klasörünü siler.

validate: Projede herhangi bir hata olup olmadığını doğrular.
compile: Clean in yaptığı işi yapar, hatalı kısımları tarar ve derleme işlemi yapar.
test: Derlenmiş kaynak kodunu test eder.
package: projeyi test eder ve paketler. 
integration-test: gerektiğinde paketi entegrasyon testlerinin yürütülebileceği bir ortama işlemek ve dağıtmaya yarar.
verify: projenin paketlenmesini tamamlar ve bunların doğruluğunu onaylar.
install: paketi yerel depoya yükler.
deploy: projeyi sunucuya deploy etme işini yapar.

İşte böylece basit bir Maven projesi oluşturmuş ve bununla ilgili temel düzeyde bir şeyler öğrenmiş olduk.

İyi günler.

Hiç yorum yok:

Yorum Gönder

LibreOffice, Libreoffice Online Derleme ve Yama Gönderme Süreci

    Libreoffice bir masaüstü ofis paketidir. Yıllar boyunca farklı adlarda geliştirilmiş şu an ise  Libreoffice adıyla devam etmektedir. Lib...