İçerikler :

Altuğ Bilgin Altıntaş'ın Maven Video'su Ant Apache Maven Project Artifact Artifactory Eclipse için Varsayılan Repository Klasörünü .. Eclipse ve Maven ile JavaDoc ve JavaDoc Jar D.. Effective POM Grup jcenter M2Eclipse - M2e Maven Maven Aracının Yararları Maven İle En Basit Bir Projenin pom.xml Örneğ.. Maven Kelimesinin Anlamı Maven Projelerinin Genel Yapısı Maven Repository: Search/Browse/Explore Maven Repository Sunucularında Olmayan Bir Ja.. Nexus Repository OSS pom.xml Proje Bağımlılığı Project Object Model - POM Shade Plugin İle Tüm Projeleri ve Kütüphanele.. SNAPSHOT Super POM Version Yiddiş Dili

Bu Sayfayı Paylaş:

Kavram

Maven

Tanım: Java projelerin standart bir şekilde yönetilmesini sağlayan ve birbirlerine olan bağımlılıklarını yönetmenizi sağlayan araç. Projelerin standart bir yapısı olmasından dolayı (POM-Project Object Model standartı) proje bağımlılıkları kolayca çözülebilmekte , projelerin dağıtılması ve yeniden kurulması kolaylaşmakta, projelerin editörlerden (Eclipse, NetBeans vb..) bağımsız bir yapıda olması sağlanmaktadır

Veri

Maven Aracının Yararları

Maven aracı aşağıdaki yararları sağlar :

  • Standart bir proje yapısı sağlar
  • Projelerin daha kısa zamanda derlenmesini , dağıtılmasını , değiştirilmesi sağlar
  • Projelerde geliştiricilerin yaptğı görevleri basitleştirir
  • Bir çok projede kullanılan bazı teknolojilere destek sağlar. Değişiklikleri kaydetme, mail listeleri, bağımlılık listesi, kolay birim test desteği gibi
  • Projenin bağımlı olduğu projedeki değişikliklerde etkilenmemesini sağlar


Veri

Maven Kelimesinin Anlamı

Maven kelimesi , Yiddiş dilinde (Aşkenazi Yahudileri tarafından kullanılan , Slav dilininden önemli ölüçüde etkilemiş olan bir Almanca lehçesi)  "Bilgi Birikimi" anlamına gelen kelimeden türetilmiş bir kelimedir


Kavram

Yiddiş Dili

Tanım: Aşkenazi yahudileri tarafından kullanılan , Slav dilininden önemli ölüçüde etkilemiş olan bir Almanca lehçesi

Kavram

Project Object Model - POM

Tanım: Maven projesinde pom.xml dosyasında saklanan, proje ve konfigürasyon hakkında detaylı bilgi. Maven proje derleme için gerekli olan bilgiyi POM'dan almaktadır

Kavram

pom.xml

Tanım: Maven projesinde proje ve konfigürasyon hakkında detaylı bilgilerin (bu bilgilere POM-Project Object Model adı verilmektedir) olduğu xml dosyası

Kavram

Proje Bağımlılığı

Tanım: Programlamada bir projenin başka projeleri kullanmasından dolayı o projeler olan bağımlılığı. Kullanılan projelerde başka projelere bağımlı olmasında dolayı bir bağımlılık yapısı oluşmaktadır. Bu problemi gidermek için çeşitli dillerde araçlar (örneğin javada Maven projesi) mevcuttur

Örnek

Maven İle En Basit Bir Projenin pom.xml Örneği

Maven aracı ile yaratılmış en basit pom.xml örneği aşağıdaki gibidir :
<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.fibiler</groupId>
  <artifactId>categorybase</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>
  <name>categorybase</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

proje kütüphane projesi olmasından dolayı packaging bilgisi jar olarak verilmiştir. junit'in 3.8.1 versiyonuna bağımlılığı bulunmaktadır.

Kaynak

Apache Maven Project

Apache tarafından geliştirilen Maven projesinin resmi sitesi

Kaynak

Maven Repository: Search/Browse/Explore

Java projelerin maven bilgilerinin olduğu web sitesi. Bir çok projenin maven ile ilgili bilgilerine buradan ulaşabilirsiniz

Kavram

Ant

Tanım: Java'da bir proje için derleme, test etme , deploy etme vb.. rutin işleri otomatikleştirmek veya kolay bir şekilde tekrarlayabilmek için geliştirilen bir araçtır. Ant ile yapılan rutin işlemler (.java dosyalarını derlemek, bir klasöre deploy etmek, bir server'a ftp ile göndermek vb..) bir XML dosyasında tanımlanır ve daha sonradan bu XML dosyası çalıştırılabilir. "Another Neat Tool = "Etkileyici Bir Başka Araç" kelimelerin baş harflerinden türetilmiştir

Materyal

Altuğ Bilgin Altıntaş'ın Maven Video'su

www.kodcu.com sitesinden Altuğ Bilgin Altıntaş tarafından hazırlanmış Maven'in kurulumu, Maven ile proje geliştirilmesi ve çalıştırılmasını anlatan video'su

İpucu

Maven Repository Sunucularında Olmayan Bir Jar'ı Maven İle Kullanmak

Projenizde kullanmak istediğimiz ancak maven repository sunucularında bulunmayan bir jar'ı pom.xml içinde ekleyip kullanmak isteyebilirsiniz.
Örneğin rowset.jar kütüphanesi için projemiz içinde (projenin hemen kökünde pom.xml olur) lib klasörü açıp bu klasörün içine rowset.jar'ı ekleyebiliriz. Bundan sonra pom.xml'e dependencies içine eklenir :
<dependency>
  <groupid>javax.sql</groupid>
  <artifactid>rowset</artifactid>
  <version>1.0.1</version>
  <scope>system</scope>
  <systempath>${basedir}/lib/rowset.jar</systempath>
</dependency>
Bu tanım eklendiğinde rowset.jar içindeki sınıfları kullanabilirsiniz
Eğer kütüphane projesi yapıyorsanız ve projenizi bir uygulama veya web projesi içinde kullanıyorsanız , jar veya war ile projeyi export ettiğinizde rowset.jar dosyasını export ettiğiniz jar veya war içinde bulamazsınız. Bunun için jar veya war export işleminde rowset.jar'ın ayrı olarak eklenmesini sağlayın

Veri

Maven Projelerinin Genel Yapısı

Basit bir Java Maven projesinin varsayılan olarak kabul ettiği proje yapısı aşağıdaki gibidir:
src/main/java (kaynak kodu)
src/main/resources (xml , konfigürasyon gibi kaynak dosyaları)
src/test (test kaynak kodları)
target (projenin jar gibi output dosyaları)
target/classes (derlenmiş kodlar)
pom.xml (proje ile ilgili genel bilgiler)

Kavram

Grup

Tanım: Maven'de birbiriyle ilgili projelerin tanımlandığı üst proje veya üst birim. Bir proje pom.xml'de tanımlanırken groupId değeri ile id'sinin verilmesi gerekmektedir.

Kavram

Artifact

Tanım: Maven'de bir proje için kullanılan birim. Bir proje için groupId ve artifactId o projenin diğer projelerden ayıran tanımını sağlamaktadır.

Kavram

Version

Tanım: Maven'de bir projenin versiyon bilgisi. Bir proje için groupId ve artifactId ile birlikte version bilgisi de verilmesi gerekmektedir.

Kavram

Super POM

Tanım: Bir POM'ın varsayılan olarak türediği , varsayılan bilgilerin olduğu üst POM

Kavram

Effective POM

Tanım: Projenin POM'i ile varsayılan Super POM'un birleşmiş hali

Kavram

M2Eclipse - M2e

Tanım: Eclipse üzerinde Maven ile çalışmayı sağlayan bir Eclipse eklentisi. Varsayılan olarak bu eklenti Eclipse ile birlikte gelmektedir.

Kavram

SNAPSHOT

Tanım: Maven'de bir versiyonun geliştirme aşamasında versiyonlarını repository'e eklenmek için kullanılan ifade. Maven, her derleme aşamasında SNAPSHOT versiyonlarını repository'den local repository'e tekrar indirmektedir ve bu nedenle proje çalışması devam ettiği sürece projeyi kullanan diğer projeler her zaman güncel versiyonlar ile çalışacaktır.

İpucu

Eclipse için Varsayılan Repository Klasörünü Değiştirme

Normal koşullarda Maven local repository adresi olarak %USER_HOME%/.m2 klasörünü kullanır. Bu klasör içine aşağıdaki gibi settings.xml eklenirse farklı bir klasörün kullanılması sağlanabilir.
<settings>
<localRepository>E:\Projects\Maven\Repository</localRepository>
</settings>
Artık Eclipse'de .jar dosyaları yukarıdaki klasöre indirilecektir

İpucu

Eclipse ve Maven ile JavaDoc ve JavaDoc Jar Dosyasını Oluşturma

Eclipse'de bir Maven projesinde otomatik javadoc dosyalarının oluşturulması sağlanabilir.

Öncelikle javadoc üreten plugin pom.xml'e eklenmelidir :
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-javadoc-plugin</artifactId>
	<executions>
		<execution>
			<id>attach-javadocs</id>
			<goals>
				<goal>jar</goal>
			</goals>
		</execution>
	</executions>
</plugin>
Ardında eclipse üzerinde Run As -> Maven Install komutunu çalıştırırsanız jar , java-doc için ayrı bir jar ve javadoc dosyaları üretilmiş olacaktır.

Üretilen javadoc sayfalarında Türkçe karakter sorununu çözmek için pom.xml'de project elementi içine aşağıdaki gibi property'leri eklemeniz gerekir :
<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
.

Kavram

jcenter

Tanım: Bintray üzerinde (Bintray, Jfrog firmasının bir ürünüdür) bulunan bir merkezi Maven repository sunucusu. Maven Central Repository sunucusunun bir alternatifidir.

Kavram

Artifactory

Tanım: JFrog firmasına ait olan açık kaynak bir repository yönetim aracı. JFrog firmasının Artifactory Pro ve Artifactory SaaS ürünleri ise ücretlidir

Kavram

Nexus Repository OSS

Tanım: Sonatype kurumun free Maven repository yönetim aracı. Nexus Repository Pro ücretli versiyonudur.

İpucu

Shade Plugin İle Tüm Projeleri ve Kütüphaneleri İçeren Jar Oluşturabilirsiniz



Bir projeyi jar olarak export ettiğinizde sadece projenin kaynakları jar'a eklenir. Eğer bir jar oluşturduğunuzda kullanılan harici tüm kütüphanelerin ve kaynakların jar'a eklenmesini istiyorsanız Maven'de shade plugin'ini kullanabilirsiniz. Plugin pom.xml'in plugins elementi içine eklenmelidir:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>2.3</version>
  <executions>
	<execution>
	<phase>package</phase>
	<goals>
		<goal>shade</goal>
	</goals>
	<configuration>
	  <transformers>
			<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
			<mainClass>com.test.App</mainClass>
		</transformer>
	  </transformers>
	</configuration>
	  </execution>
  </executions>
</plugin>


Bu eklemeyi yaptıktan sonra mvn package komutu verildiğinde tüm kaynakların içerildiği jar üretilecektir. Artık oluşan jar'daki com.test.App uygulamasını çalıştırabilirsiniz ve başka bir harici jar'ı classpath'e eklenemenize gerek yoktur.



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir