{"id":36551,"date":"2025-12-19T19:40:53","date_gmt":"2025-12-19T16:40:53","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=36551"},"modified":"2025-12-19T19:40:53","modified_gmt":"2025-12-19T16:40:53","slug":"maven-derleme-yasam-dongusu-fazlari-ve-hedefleri","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/","title":{"rendered":"Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri"},"content":{"rendered":"<p><body><\/p>\n<h2>Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri<\/h2>\n<h2>Giri\u015f: Maven ve Otomatik Derleme S\u00fcre\u00e7leri<\/h2>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, projelerin derlenmesi, test edilmesi, paketlenmesi ve da\u011f\u0131t\u0131lmas\u0131 gibi s\u00fcre\u00e7ler giderek karma\u015f\u0131kla\u015fmaktad\u0131r. Bu karma\u015f\u0131kl\u0131\u011f\u0131 y\u00f6netmek, tutarl\u0131l\u0131\u011f\u0131 sa\u011flamak ve geli\u015ftirici \u00fcretkenli\u011fini art\u0131rmak amac\u0131yla \u00e7e\u015fitli derleme otomasyon ara\u00e7lar\u0131 geli\u015ftirilmi\u015ftir. Apache Maven, bu ara\u00e7lar aras\u0131nda en pop\u00fcler ve yayg\u0131n olarak kullan\u0131lanlardan biridir. Java tabanl\u0131 projeler i\u00e7in tasarlanm\u0131\u015f olsa da, \u00e7e\u015fitli plugin&#8217;ler arac\u0131l\u0131\u011f\u0131yla di\u011fer dillerdeki projeleri de destekleyebilir.<\/p>\n<p>Maven&#8217;\u0131n temel amac\u0131, bir projenin derleme ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc standartla\u015ft\u0131rmak ve otomatikle\u015ftirmektir. Geli\u015ftiricilerin proje yap\u0131land\u0131rmalar\u0131n\u0131 XML tabanl\u0131 <code>pom.xml<\/code> (Project Object Model) dosyalar\u0131nda tan\u0131mlamas\u0131na olanak tan\u0131r. Bu dosya, projenin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131, derleme ayarlar\u0131n\u0131, plugin&#8217;lerini ve di\u011fer meta verilerini i\u00e7erir. Maven, bu tan\u0131mlamalara dayanarak projeyi derler, test eder, paketler ve da\u011f\u0131t\u0131r.<\/p>\n<p>Maven&#8217;\u0131n en g\u00fc\u00e7l\u00fc y\u00f6nlerinden biri, &#8220;ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi&#8221; ve &#8220;standart proje yap\u0131s\u0131&#8221; sa\u011flamas\u0131d\u0131r. Ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi sayesinde, projenizin ihtiya\u00e7 duydu\u011fu k\u00fct\u00fcphaneleri ve mod\u00fclleri kolayca tan\u0131mlayabilir ve Maven&#8217;\u0131n bunlar\u0131 otomatik olarak indirip projenize dahil etmesini sa\u011flayabilirsiniz. Standart proje yap\u0131s\u0131 ise, farkl\u0131 projelerde \u00e7al\u0131\u015fan geli\u015ftiricilerin projenin dosyalar\u0131n\u0131 ve dizinlerini kolayca bulmas\u0131n\u0131 ve anlamas\u0131n\u0131 sa\u011flar, bu da ekip i\u00e7i i\u015fbirli\u011fini ve proje devrini kolayla\u015ft\u0131r\u0131r. Ancak Maven&#8217;\u0131n ger\u00e7ek g\u00fcc\u00fc, derleme s\u00fcre\u00e7lerini y\u00f6netti\u011fi &#8220;ya\u015fam d\u00f6ng\u00fcs\u00fc&#8221; konseptinde yatmaktad\u0131r. Bu makale, Maven&#8217;\u0131n derleme ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc, bu ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc olu\u015fturan fazlar\u0131 ve her fazda ger\u00e7ekle\u015ftirilen spesifik g\u00f6revler olan hedefleri derinlemesine inceleyecektir.<\/p>\n<h2>Maven&#8217;\u0131n Kalbi: Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc<\/h2>\n<p>Maven&#8217;\u0131n merkezi ilkesi, bir &#8220;derleme ya\u015fam d\u00f6ng\u00fcs\u00fc&#8221; kavram\u0131na dayan\u0131r. Bu ya\u015fam d\u00f6ng\u00fcs\u00fc, bir projenin derlenmesi, test edilmesi ve da\u011f\u0131t\u0131lmas\u0131 i\u00e7in gereken ad\u0131mlar\u0131 tan\u0131mlayan bir dizi s\u0131ral\u0131 fazdan olu\u015fur. Geleneksel derleme sistemlerinde, her projenin kendi \u00f6zel derleme script&#8217;leri (\u00f6rne\u011fin, Ant veya Make dosyalar\u0131) olurdu. Bu durum, farkl\u0131 projeler aras\u0131nda tutars\u0131zl\u0131\u011fa yol a\u00e7ar ve yeni bir projeye adapte olmay\u0131 zorla\u015ft\u0131r\u0131rd\u0131. Maven, bu sorunu standartla\u015ft\u0131r\u0131lm\u0131\u015f bir ya\u015fam d\u00f6ng\u00fcs\u00fc modeli sunarak \u00e7\u00f6zer.<\/p>\n<p>Maven, \u00fc\u00e7 temel yerle\u015fik ya\u015fam d\u00f6ng\u00fcs\u00fc sunar:<br \/>\n1.  <code>default<\/code> (varsay\u0131lan) ya\u015fam d\u00f6ng\u00fcs\u00fc: Projeyi derlemek, test etmek, paketlemek ve da\u011f\u0131tmak i\u00e7in kullan\u0131l\u0131r. Bu, en kapsaml\u0131 ve en s\u0131k kullan\u0131lan ya\u015fam d\u00f6ng\u00fcs\u00fcd\u00fcr.<br \/>\n2.  <code>clean<\/code> (temizleme) ya\u015fam d\u00f6ng\u00fcs\u00fc: Bir projenin derlenmi\u015f \u00e7\u0131kt\u0131lar\u0131n\u0131n ve ge\u00e7ici dosyalar\u0131n\u0131n temizlenmesi i\u00e7in kullan\u0131l\u0131r.<br \/>\n3.  <code>site<\/code> (site olu\u015fturma) ya\u015fam d\u00f6ng\u00fcs\u00fc: Projenin dok\u00fcmantasyon sitesini olu\u015fturmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>Bu ya\u015fam d\u00f6ng\u00fcleri, bir dizi &#8220;faz&#8221;dan olu\u015fur. Her faz, belirli bir derleme a\u015famas\u0131n\u0131 temsil eder ve belirli &#8220;hedefler&#8221; (goals) bu fazlara ba\u011flan\u0131r. Bir faz\u0131 \u00e7a\u011f\u0131rd\u0131\u011f\u0131n\u0131zda, Maven o faza kadar olan t\u00fcm fazlar\u0131 ve bu fazlara ba\u011fl\u0131 t\u00fcm hedefleri s\u0131ras\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131r. Bu &#8220;hedefe kadar olan her \u015feyi \u00e7al\u0131\u015ft\u0131r&#8221; prensibi, Maven&#8217;\u0131n otomasyon ve tutarl\u0131l\u0131k sa\u011flamadaki temel mekanizmalar\u0131ndan biridir.<\/p>\n<h3>Default (Varsay\u0131lan) Ya\u015fam D\u00f6ng\u00fcs\u00fc: Proje Derleme ve Da\u011f\u0131t\u0131m<\/h3>\n<p><code>default<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fc, Maven&#8217;\u0131n kalbidir ve bir projenin t\u00fcm derleme, test etme, paketleme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini kapsar. Bu ya\u015fam d\u00f6ng\u00fcs\u00fc, bir projenin ham kaynak kodundan, da\u011f\u0131t\u0131ma haz\u0131r bir yap\u0131ya d\u00f6n\u00fc\u015fmesine kadar ge\u00e7en t\u00fcm ad\u0131mlar\u0131 tan\u0131mlar. Bir geli\u015ftirici olarak en s\u0131k etkile\u015fimde bulunaca\u011f\u0131n\u0131z ya\u015fam d\u00f6ng\u00fcs\u00fc budur. A\u015fa\u011f\u0131da, bu ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn temel fazlar\u0131 ve her birinin k\u0131sa bir a\u00e7\u0131klamas\u0131 bulunmaktad\u0131r. Bu fazlar, belirli bir s\u0131raya g\u00f6re \u00e7al\u0131\u015f\u0131r ve bir sonraki faza ge\u00e7mek i\u00e7in \u00f6nceki fazlar\u0131n ba\u015far\u0131yla tamamlanmas\u0131 gerekir.<\/p>\n<h3>Clean (Temizleme) Ya\u015fam D\u00f6ng\u00fcs\u00fc: Proje Temizli\u011fi<\/h3>\n<p><code>clean<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fc, projenin derleme \u00e7\u0131kt\u0131lar\u0131n\u0131, ge\u00e7ici dosyalar\u0131n\u0131 ve di\u011fer olu\u015fturulmu\u015f yap\u0131lar\u0131n\u0131 temizlemek i\u00e7in tasarlanm\u0131\u015ft\u0131r. Bu, \u00f6zellikle bir \u00f6nceki derlemeden kalm\u0131\u015f olabilecek eski dosyalar\u0131n yeni bir derlemeyi etkilemesini \u00f6nlemek i\u00e7in \u00f6nemlidir. Sadece \u00fc\u00e7 ana fazdan olu\u015fur:<br \/>\n*   <code>pre-clean<\/code>: Temizleme i\u015fleminden \u00f6nce yap\u0131lmas\u0131 gereken g\u00f6revleri i\u00e7erir.<br \/>\n*   <code>clean<\/code>: Projenin derleme dizinini (varsay\u0131lan olarak <code>target\/<\/code>) ve t\u00fcm i\u00e7eri\u011fini siler. Bu faz genellikle <code>maven-clean-plugin:clean<\/code> hedefini \u00e7al\u0131\u015ft\u0131r\u0131r.<br \/>\n*   <code>post-clean<\/code>: Temizleme i\u015fleminden sonra yap\u0131lmas\u0131 gereken g\u00f6revleri i\u00e7erir.<\/p>\n<p><code>mvn clean<\/code> komutu, <code>clean<\/code> faz\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rarak projenin <code>target<\/code> dizinini siler.<\/p>\n<h3>Site (Site Olu\u015fturma) Ya\u015fam D\u00f6ng\u00fcs\u00fc: Proje Dok\u00fcmantasyonu<\/h3>\n<p><code>site<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fc, projenin dok\u00fcmantasyonunu ve raporlar\u0131n\u0131 i\u00e7eren bir web sitesi olu\u015fturmak i\u00e7in kullan\u0131l\u0131r. Bu site, projenin ba\u011f\u0131ml\u0131l\u0131klar\u0131, test raporlar\u0131, kod kalitesi metrikleri ve di\u011fer proje bilgileri gibi \u00e7e\u015fitli raporlar\u0131 i\u00e7erebilir. Fazlar\u0131 \u015funlard\u0131r:<br \/>\n*   <code>pre-site<\/code>: Site olu\u015fturma i\u015fleminden \u00f6nce yap\u0131lmas\u0131 gereken g\u00f6revleri i\u00e7erir.<br \/>\n*   <code>site<\/code>: Proje dok\u00fcmantasyonunu olu\u015fturur. Genellikle <code>maven-site-plugin:site<\/code> hedefini \u00e7al\u0131\u015ft\u0131r\u0131r.<br \/>\n*   <code>post-site<\/code>: Site olu\u015fturma i\u015fleminden sonra yap\u0131lmas\u0131 gereken g\u00f6revleri i\u00e7erir.<br \/>\n*   <code>site-deploy<\/code>: Olu\u015fturulan siteyi bir uzak sunucuya da\u011f\u0131t\u0131r. Genellikle <code>maven-site-plugin:deploy<\/code> hedefini \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<p><code>mvn site<\/code> komutu, projenin dok\u00fcmantasyon sitesini <code>target\/site<\/code> dizini alt\u0131nda olu\u015fturur. <code>mvn site-deploy<\/code> ise bu siteyi yap\u0131land\u0131r\u0131lm\u0131\u015f uzak depoya g\u00f6nderir.<\/p>\n<h2>Derleme Fazlar\u0131: Ya\u015fam D\u00f6ng\u00fcs\u00fcn\u00fcn Ad\u0131mlar\u0131<\/h2>\n<p>Bir &#8220;faz&#8221; (phase), bir Maven ya\u015fam d\u00f6ng\u00fcs\u00fcndeki belirli bir ad\u0131m\u0131 temsil eder. Her faz, projenin derleme s\u00fcrecinin mant\u0131ksal bir a\u015famas\u0131d\u0131r. Maven&#8217;\u0131n g\u00fcc\u00fc, bu fazlar\u0131n \u00f6nceden tan\u0131mlanm\u0131\u015f bir s\u0131raya sahip olmas\u0131 ve bir faz\u0131 \u00e7a\u011f\u0131rd\u0131\u011f\u0131n\u0131zda, Maven&#8217;\u0131n otomatik olarak o faza kadar olan t\u00fcm \u00f6nceki fazlar\u0131 da \u00e7al\u0131\u015ft\u0131rmas\u0131d\u0131r. Bu sayede, \u00f6rne\u011fin <code>mvn package<\/code> komutunu verdi\u011finizde, Maven \u00f6nce kaynak kodlar\u0131 do\u011frular, derler, testleri \u00e7al\u0131\u015ft\u0131r\u0131r ve ancak ondan sonra paketleme i\u015flemini yapar.<\/p>\n<p><code>default<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn en \u00f6nemli fazlar\u0131 \u015funlard\u0131r:<\/p>\n<p>*   <code>validate<\/code>: Projenin do\u011fru yap\u0131land\u0131r\u0131l\u0131p yap\u0131land\u0131r\u0131lmad\u0131\u011f\u0131n\u0131, t\u00fcm gerekli parametrelerin mevcut olup olmad\u0131\u011f\u0131n\u0131 ve <code>pom.xml<\/code> dosyas\u0131n\u0131n ge\u00e7erli olup olmad\u0131\u011f\u0131n\u0131 do\u011frular. Bu, derleme s\u00fcrecinin ilk ad\u0131m\u0131d\u0131r.<br \/>\n*   <code>initialize<\/code>: Derleme \u00f6ncesi ortam\u0131 haz\u0131rlar. \u00d6rne\u011fin, gerekli dizinleri olu\u015fturabilir veya baz\u0131 \u00f6zellik dosyalar\u0131n\u0131 y\u00fckleyebilir.<br \/>\n*   <code>generate-sources<\/code>: Projenin kaynak kodlar\u0131n\u0131n olu\u015fturulmas\u0131 gereken durumlarda (\u00f6rne\u011fin, ANTLR, XSD \u015femalar\u0131ndan Java s\u0131n\u0131flar\u0131 olu\u015fturma) bu fazda i\u015flem yap\u0131l\u0131r.<br \/>\n*   <code>process-sources<\/code>: Kaynak kodlar\u0131n\u0131n i\u015flenmesi. Genellikle \u00f6zel bir i\u015flem yap\u0131lmaz, ancak baz\u0131 plugin&#8217;ler bu faza ba\u011flanabilir.<br \/>\n*   <code>generate-resources<\/code>: Projenin kaynak dosyalar\u0131n\u0131n (\u00f6rne\u011fin, <code>src\/main\/resources<\/code> alt\u0131ndaki dosyalar) olu\u015fturulmas\u0131 gereken durumlarda kullan\u0131l\u0131r.<br \/>\n*   <code>process-resources<\/code>: Kaynak dosyalar\u0131n\u0131n hedeflenen \u00e7\u0131kt\u0131 dizinine kopyalanmas\u0131 ve filtrelenmesi (\u00f6rne\u011fin, <code>pom.xml<\/code>&#8216;deki \u00f6zelliklerin kaynak dosyalara enjekte edilmesi) bu fazda ger\u00e7ekle\u015fir. Bu, <code>maven-resources-plugin:resources<\/code> hedefi taraf\u0131ndan yap\u0131l\u0131r.<br \/>\n*   <code>compile<\/code>: Projenin ana kaynak kodlar\u0131n\u0131n (genellikle <code>src\/main\/java<\/code> alt\u0131ndaki Java dosyalar\u0131) derlenmesi. Bu faz, <code>maven-compiler-plugin:compile<\/code> hedefini \u00e7al\u0131\u015ft\u0131r\u0131r ve derlenmi\u015f <code>.class<\/code> dosyalar\u0131n\u0131 <code>target\/classes<\/code> dizinine yerle\u015ftirir.<br \/>\n*   <code>process-classes<\/code>: Derlenmi\u015f s\u0131n\u0131flar\u0131n i\u015flenmesi. Genellikle byte kodu manip\u00fclasyonu gibi i\u015flemler i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <code>generate-test-sources<\/code>: Test kaynak kodlar\u0131n\u0131n olu\u015fturulmas\u0131 gereken durumlarda kullan\u0131l\u0131r.<br \/>\n*   <code>process-test-sources<\/code>: Test kaynak kodlar\u0131n\u0131n i\u015flenmesi.<br \/>\n*   <code>generate-test-resources<\/code>: Test kaynak dosyalar\u0131n\u0131n olu\u015fturulmas\u0131 gereken durumlarda kullan\u0131l\u0131r.<br \/>\n*   <code>process-test-resources<\/code>: Test kaynak dosyalar\u0131n\u0131n hedeflenen test \u00e7\u0131kt\u0131 dizinine kopyalanmas\u0131 ve filtrelenmesi. Bu, <code>maven-resources-plugin:testResources<\/code> hedefi taraf\u0131ndan yap\u0131l\u0131r.<br \/>\n*   <code>test-compile<\/code>: Projenin test kaynak kodlar\u0131n\u0131n (genellikle <code>src\/test\/java<\/code> alt\u0131ndaki Java dosyalar\u0131) derlenmesi. Bu faz, <code>maven-compiler-plugin:testCompile<\/code> hedefini \u00e7al\u0131\u015ft\u0131r\u0131r ve derlenmi\u015f test <code>.class<\/code> dosyalar\u0131n\u0131 <code>target\/test-classes<\/code> dizinine yerle\u015ftirir.<br \/>\n*   <code>process-test-classes<\/code>: Derlenmi\u015f test s\u0131n\u0131flar\u0131n\u0131n i\u015flenmesi.<br \/>\n*   <code>test<\/code>: JUnit veya TestNG gibi test \u00e7at\u0131lar\u0131n\u0131n kullan\u0131larak projenin birim testlerinin \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131. Bu faz, <code>maven-surefire-plugin:test<\/code> hedefini \u00e7al\u0131\u015ft\u0131r\u0131r ve test raporlar\u0131n\u0131 olu\u015fturur. Testler ba\u015far\u0131s\u0131z olursa, derleme durur.<br \/>\n*   <code>verify<\/code>: Entegrasyon testlerinin sonu\u00e7lar\u0131n\u0131 kontrol etmek ve projenin kalite hedeflerini kar\u015f\u0131lad\u0131\u011f\u0131ndan emin olmak i\u00e7in kullan\u0131l\u0131r. Genellikle test faz\u0131ndan sonra \u00e7al\u0131\u015f\u0131r ve testlerin ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol eder.<br \/>\n*   <code>integration-test<\/code>: Entegrasyon testlerini \u00e7al\u0131\u015ft\u0131r\u0131r. Bu faz genellikle ayr\u0131 bir ortamda \u00e7al\u0131\u015f\u0131r ve birim testlerinden daha kapsaml\u0131 test senaryolar\u0131n\u0131 i\u00e7erir. <code>pre-integration-test<\/code> ve <code>post-integration-test<\/code> fazlar\u0131 da bu testleri \u00e7evreler.<br \/>\n*   <code>package<\/code>: Derlenmi\u015f kodun ve kaynaklar\u0131n da\u011f\u0131t\u0131labilir bir formatta (\u00f6rne\u011fin, JAR, WAR, EAR) paketlenmesi. Bu faz, <code>maven-jar-plugin:jar<\/code> veya <code>maven-war-plugin:war<\/code> gibi hedefleri \u00e7al\u0131\u015ft\u0131r\u0131r ve paketi <code>target\/<\/code> dizinine yerle\u015ftirir.<br \/>\n*   <code>install<\/code>: Olu\u015fturulan paketi (JAR, WAR vb.) yerel Maven deposuna y\u00fckler. Bu sayede, di\u011fer yerel projeler bu paketi bir ba\u011f\u0131ml\u0131l\u0131k olarak kullanabilir. Bu faz, <code>maven-install-plugin:install<\/code> hedefini \u00e7al\u0131\u015ft\u0131r\u0131r.<br \/>\n*   <code>deploy<\/code>: Olu\u015fturulan paketi uzak bir Maven deposuna (\u00f6rne\u011fin, Nexus, Artifactory) da\u011f\u0131t\u0131r. Bu, projenin di\u011fer geli\u015ftiriciler veya CI\/CD sistemleri taraf\u0131ndan eri\u015filebilir olmas\u0131n\u0131 sa\u011flar. Bu faz, <code>maven-deploy-plugin:deploy<\/code> hedefini \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<h2>Derleme Hedefleri: Plugin&#8217;lerin G\u00f6revleri<\/h2>\n<p>Bir &#8220;hedef&#8221; (goal), bir Maven plugin&#8217;i taraf\u0131ndan ger\u00e7ekle\u015ftirilen belirli bir g\u00f6revi temsil eden atomik bir i\u015f birimidir. Hedefler, Maven&#8217;\u0131n ger\u00e7ek i\u015fi yapan mekanizmalar\u0131d\u0131r. Her plugin, bir veya daha fazla hedefe sahiptir. \u00d6rne\u011fin, <code>maven-compiler-plugin<\/code>&#8216;in <code>compile<\/code> ve <code>testCompile<\/code> hedefleri varken, <code>maven-jar-plugin<\/code>&#8216;in <code>jar<\/code> hedefi vard\u0131r.<\/p>\n<p>Hedefler, ya\u015fam d\u00f6ng\u00fcs\u00fcndeki fazlara &#8220;ba\u011flan\u0131r&#8221; (bound). Bu ba\u011flama, genellikle Maven&#8217;\u0131n kendisi taraf\u0131ndan veya plugin&#8217;ler taraf\u0131ndan varsay\u0131lan olarak yap\u0131l\u0131r. \u00d6rne\u011fin:<br \/>\n*   <code>maven-compiler-plugin:compile<\/code> hedefi, <code>compile<\/code> faz\u0131na varsay\u0131lan olarak ba\u011flanm\u0131\u015ft\u0131r.<br \/>\n*   <code>maven-surefire-plugin:test<\/code> hedefi, <code>test<\/code> faz\u0131na varsay\u0131lan olarak ba\u011flanm\u0131\u015ft\u0131r.<br \/>\n*   <code>maven-jar-plugin:jar<\/code> hedefi, <code>package<\/code> faz\u0131na varsay\u0131lan olarak ba\u011flanm\u0131\u015ft\u0131r.<br \/>\n*   <code>maven-install-plugin:install<\/code> hedefi, <code>install<\/code> faz\u0131na varsay\u0131lan olarak ba\u011flanm\u0131\u015ft\u0131r.<br \/>\n*   <code>maven-deploy-plugin:deploy<\/code> hedefi, <code>deploy<\/code> faz\u0131na varsay\u0131lan olarak ba\u011flanm\u0131\u015ft\u0131r.<\/p>\n<p>Bir faz\u0131 \u00e7a\u011f\u0131rd\u0131\u011f\u0131n\u0131zda (\u00f6rne\u011fin, <code>mvn compile<\/code>), Maven o faza kadar olan t\u00fcm fazlardaki varsay\u0131lan olarak ba\u011fl\u0131 hedefleri s\u0131ras\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, Maven&#8217;\u0131n otomasyon modelinin temelini olu\u015fturur.<\/p>\n<p>Hedefler ayr\u0131ca do\u011frudan da \u00e7a\u011fr\u0131labilir. Bir hedefi do\u011frudan \u00e7a\u011f\u0131rd\u0131\u011f\u0131n\u0131zda, Maven yaln\u0131zca o hedefi \u00e7al\u0131\u015ft\u0131r\u0131r ve genellikle ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn di\u011fer fazlar\u0131n\u0131 atlar. Bir hedefi \u00e7a\u011f\u0131rmak i\u00e7in genellikle <code>plugin-ad\u0131:hedef-ad\u0131<\/code> format\u0131 kullan\u0131l\u0131r. \u00d6rne\u011fin:<br \/>\n*   <code>mvn compiler:compile<\/code>: Sadece ana kaynak kodlar\u0131n\u0131 derler. \u00d6nceki fazlara ba\u011fl\u0131 hedefler \u00e7al\u0131\u015ft\u0131r\u0131lmaz.<br \/>\n*   <code>mvn surefire:test<\/code>: Sadece birim testlerini \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, testleri h\u0131zl\u0131ca tekrar \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<br \/>\n*   <code>mvn clean:clean<\/code>: <code>clean<\/code> plugin&#8217;inin <code>clean<\/code> hedefini \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, <code>mvn clean<\/code> ile ayn\u0131 etkiyi yarat\u0131r \u00e7\u00fcnk\u00fc <code>clean<\/code> faz\u0131na varsay\u0131lan olarak bu hedef ba\u011flanm\u0131\u015ft\u0131r.<\/p>\n<p>Do\u011frudan hedef \u00e7a\u011f\u0131rman\u0131n, bir faz\u0131 \u00e7a\u011f\u0131rmaktan fark\u0131, faz \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda o faza kadar olan t\u00fcm fazlar\u0131n ve onlar\u0131n hedeflerinin \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131d\u0131r. Hedef \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda ise sadece o spesifik hedef \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Bu ayr\u0131m, derleme s\u00fcrecini daha ince taneli bir \u015fekilde kontrol etmek istedi\u011finizde \u00f6nemlidir.<\/p>\n<h2>Plugin&#8217;ler: Maven&#8217;\u0131n Geni\u015fletilebilir Yap\u0131s\u0131<\/h2>\n<p>Maven&#8217;\u0131n t\u00fcm ger\u00e7ek i\u015fleri &#8220;plugin&#8221;ler arac\u0131l\u0131\u011f\u0131yla yap\u0131l\u0131r. Plugin&#8217;ler, belirli g\u00f6revleri ger\u00e7ekle\u015ftiren kod par\u00e7ac\u0131klar\u0131d\u0131r ve her bir plugin bir veya daha fazla hedefe sahiptir. Maven&#8217;\u0131n \u00e7ekirde\u011fi olduk\u00e7a hafiftir; derleme, test, paketleme gibi t\u00fcm i\u015flevler plugin&#8217;ler taraf\u0131ndan sa\u011flan\u0131r. Bu mod\u00fcler yap\u0131, Maven&#8217;\u0131 son derece esnek ve geni\u015fletilebilir k\u0131lar.<\/p>\n<p>Maven, \u00e7e\u015fitli &#8220;\u00e7ekirdek plugin&#8221;ler ile birlikte gelir ve bunlar \u00e7o\u011fu projede varsay\u0131lan olarak kullan\u0131l\u0131r:<br \/>\n*   <strong>Maven Compiler Plugin<\/strong>: Java kaynak kodlar\u0131n\u0131 derlemek i\u00e7in kullan\u0131l\u0131r (<code>compile<\/code>, <code>testCompile<\/code> hedefleri).<br \/>\n*   <strong>Maven Surefire Plugin<\/strong>: Birim testlerini \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131l\u0131r (<code>test<\/code> hedefi).<br \/>\n*   <strong>Maven Failsafe Plugin<\/strong>: Entegrasyon testlerini \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131l\u0131r (<code>integration-test<\/code>, <code>verify<\/code> hedefleri).<br \/>\n*   <strong>Maven JAR Plugin<\/strong>: JAR dosyalar\u0131 olu\u015fturmak i\u00e7in kullan\u0131l\u0131r (<code>jar<\/code> hedefi).<br \/>\n*   <strong>Maven WAR Plugin<\/strong>: WAR dosyalar\u0131 olu\u015fturmak i\u00e7in kullan\u0131l\u0131r (<code>war<\/code> hedefi).<br \/>\n*   <strong>Maven EAR Plugin<\/strong>: EAR dosyalar\u0131 olu\u015fturmak i\u00e7in kullan\u0131l\u0131r (<code>ear<\/code> hedefi).<br \/>\n*   <strong>Maven Install Plugin<\/strong>: Paketleri yerel depoya y\u00fcklemek i\u00e7in kullan\u0131l\u0131r (<code>install<\/code> hedefi).<br \/>\n*   <strong>Maven Deploy Plugin<\/strong>: Paketleri uzak depoya da\u011f\u0131tmak i\u00e7in kullan\u0131l\u0131r (<code>deploy<\/code> hedefi).<br \/>\n*   <strong>Maven Resources Plugin<\/strong>: Kaynak dosyalar\u0131n\u0131 kopyalamak ve filtrelemek i\u00e7in kullan\u0131l\u0131r (<code>resources<\/code>, <code>testResources<\/code> hedefleri).<br \/>\n*   <strong>Maven Clean Plugin<\/strong>: Derleme \u00e7\u0131kt\u0131lar\u0131n\u0131 temizlemek i\u00e7in kullan\u0131l\u0131r (<code>clean<\/code> hedefi).<br \/>\n*   <strong>Maven Site Plugin<\/strong>: Proje dok\u00fcmantasyon sitesi olu\u015fturmak i\u00e7in kullan\u0131l\u0131r (<code>site<\/code>, <code>deploy<\/code> hedefleri).<\/p>\n<p>Plugin&#8217;ler, <code>pom.xml<\/code> dosyas\u0131nda <code><build><\/code> b\u00f6l\u00fcm\u00fc alt\u0131nda <code><plugins><\/code> etiketi i\u00e7inde yap\u0131land\u0131r\u0131l\u0131r. Bu yap\u0131land\u0131rma, plugin&#8217;in hangi fazda \u00e7al\u0131\u015faca\u011f\u0131n\u0131, hangi hedefleri kullanaca\u011f\u0131n\u0131 ve bu hedeflerin nas\u0131l davranaca\u011f\u0131n\u0131 belirlemenizi sa\u011flar. \u00d6rne\u011fin, <code>maven-compiler-plugin<\/code>&#8216;i kullanarak Java s\u00fcr\u00fcm\u00fcn\u00fc belirleyebilirsiniz:<\/p>\n<pre><code class=\"language-xml\"><build>\n    <plugins>\n        <plugin>\n            <groupId>org.apache.maven.plugins<\/groupId>\n            <artifactId>maven-compiler-plugin<\/artifactId>\n            <version>3.8.1<\/version>\n            <configuration>\n                <source>11<\/source>\n                <target>11<\/target>\n            <\/configuration>\n        <\/plugin>\n    <\/plugins>\n<\/build><\/code><\/pre>\n<p>Bu esneklik sayesinde, Maven&#8217;\u0131 projenizin \u00f6zel gereksinimlerine g\u00f6re uyarlayabilir, farkl\u0131 derleme ad\u0131mlar\u0131 ekleyebilir veya mevcut ad\u0131mlar\u0131n davran\u0131\u015f\u0131n\u0131 de\u011fi\u015ftirebilirsiniz.<\/p>\n<h2>Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar ve Hedefler Aras\u0131ndaki \u0130li\u015fki<\/h2>\n<p>Maven&#8217;\u0131n \u00e7al\u0131\u015fma prensibini anlamak i\u00e7in ya\u015fam d\u00f6ng\u00fcs\u00fc, fazlar ve hedefler aras\u0131ndaki ili\u015fkiyi net bir \u015fekilde kavramak kritik \u00f6neme sahiptir. Bu \u00fc\u00e7 kavram, bir piramidin katmanlar\u0131 gibi d\u00fc\u015f\u00fcn\u00fclebilir:<\/p>\n<p>*   <strong>Ya\u015fam D\u00f6ng\u00fcs\u00fc (Lifecycle)<\/strong>: En \u00fcst seviyededir ve bir projenin derleme s\u00fcrecini kapsayan genel, soyut bir iskelet veya blueprint g\u00f6revi g\u00f6r\u00fcr. \u00d6rne\u011fin, <code>default<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fc, bir projenin derlenmesinden da\u011f\u0131t\u0131m\u0131na kadar t\u00fcm s\u00fcreci tan\u0131mlar.<br \/>\n*   <strong>Fazlar (Phases)<\/strong>: Ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc olu\u015fturan belirli, s\u0131ral\u0131 ad\u0131mlard\u0131r. Her faz, derleme s\u00fcrecinin mant\u0131ksal bir a\u015famas\u0131n\u0131 temsil eder (\u00f6rne\u011fin, <code>compile<\/code>, <code>test<\/code>, <code>package<\/code>). Fazlar, kendili\u011finden herhangi bir i\u015f yapmazlar; sadece o a\u015famada hangi hedeflerin \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 gerekti\u011fini belirtirler. Bir faz\u0131 \u00e7a\u011f\u0131rd\u0131\u011f\u0131n\u0131zda, Maven o faza kadar olan t\u00fcm fazlar\u0131 s\u0131ras\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Hedefler (Goals)<\/strong>: En alt seviyededir ve plugin&#8217;ler taraf\u0131ndan ger\u00e7ekle\u015ftirilen somut, atomik g\u00f6revlerdir. Hedefler, ger\u00e7ek i\u015fi yapan mekanizmalard\u0131r (\u00f6rne\u011fin, kaynak kodlar\u0131n\u0131 derlemek, testleri \u00e7al\u0131\u015ft\u0131rmak, JAR dosyas\u0131 olu\u015fturmak). Her hedef, bir veya daha fazla faza ba\u011flanabilir. Bir faz \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda, o faza ba\u011fl\u0131 t\u00fcm hedefler de \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r.<\/p>\n<p>\u00d6zetle, bir ya\u015fam d\u00f6ng\u00fcs\u00fc, bir dizi fazdan olu\u015fur ve her faz, bir veya daha fazla hedefe ba\u011flanm\u0131\u015ft\u0131r. Bir Maven komutuyla bir faz\u0131 \u00e7a\u011f\u0131rd\u0131\u011f\u0131n\u0131zda (\u00f6rne\u011fin, <code>mvn install<\/code>), Maven s\u0131ras\u0131yla \u015fu ad\u0131mlar\u0131 izler:<br \/>\n1.  <code>install<\/code> faz\u0131na ula\u015fana kadar <code>default<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcndeki t\u00fcm \u00f6nceki fazlar\u0131 (validate, compile, test, package vb.) s\u0131rayla \u00e7al\u0131\u015ft\u0131r\u0131r.<br \/>\n2.  Her faz \u00e7al\u0131\u015ft\u0131\u011f\u0131nda, o faza varsay\u0131lan olarak veya <code>pom.xml<\/code>&#8216;de yap\u0131land\u0131r\u0131larak ba\u011flanm\u0131\u015f t\u00fcm hedefleri \u00e7al\u0131\u015ft\u0131r\u0131r.<br \/>\n3.  \u00d6rne\u011fin, <code>compile<\/code> faz\u0131na ula\u015ft\u0131\u011f\u0131nda <code>maven-compiler-plugin:compile<\/code> hedefini \u00e7al\u0131\u015ft\u0131r\u0131r. <code>test<\/code> faz\u0131na ula\u015ft\u0131\u011f\u0131nda <code>maven-surefire-plugin:test<\/code> hedefini \u00e7al\u0131\u015ft\u0131r\u0131r. <code>package<\/code> faz\u0131na ula\u015ft\u0131\u011f\u0131nda <code>maven-jar-plugin:jar<\/code> hedefini \u00e7al\u0131\u015ft\u0131r\u0131r. Ve son olarak <code>install<\/code> faz\u0131na ula\u015ft\u0131\u011f\u0131nda <code>maven-install-plugin:install<\/code> hedefini \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<p>Bu hiyerar\u015fik yap\u0131, Maven&#8217;a b\u00fcy\u00fck bir esneklik ve tutarl\u0131l\u0131k sa\u011flar. Geli\u015ftiriciler, sadece bir faz\u0131 \u00e7a\u011f\u0131rarak karma\u015f\u0131k bir derleme s\u00fcrecini tetikleyebilir ve Maven&#8217;\u0131n t\u00fcm ara ad\u0131mlar\u0131 do\u011fru s\u0131rada ve do\u011fru hedeflerle otomatik olarak y\u00fcr\u00fctece\u011finden emin olabilirler.<\/p>\n<h2>Pratik Maven Komutlar\u0131 ve Anlamlar\u0131<\/h2>\n<p>Maven&#8217;\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fc, fazlar\u0131 ve hedeflerini anlamak, g\u00fcnl\u00fck geli\u015ftirme s\u00fcre\u00e7lerinde kullan\u0131lan komutlar\u0131n ne anlama geldi\u011fini kavramak i\u00e7in hayati \u00f6neme sahiptir. \u0130\u015fte en s\u0131k kullan\u0131lan Maven komutlar\u0131 ve bunlar\u0131n Maven&#8217;\u0131n i\u00e7 i\u015fleyi\u015fiyle nas\u0131l ili\u015fkili olduklar\u0131:<\/p>\n<p>*   <code>mvn validate<\/code>: <code>default<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn ilk faz\u0131 olan <code>validate<\/code> faz\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, <code>pom.xml<\/code> dosyas\u0131n\u0131n ge\u00e7erlili\u011fini ve projenin do\u011fru yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131n\u0131 kontrol eder. Herhangi bir derleme i\u015flemi yapmaz, sadece \u00f6n kontrol sa\u011flar.<br \/>\n*   <code>mvn compile<\/code>: <code>default<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcndeki <code>compile<\/code> faz\u0131n\u0131 ve bu faza kadar olan t\u00fcm \u00f6nceki fazlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, projenin ana kaynak kodlar\u0131n\u0131 derler ve <code>.class<\/code> dosyalar\u0131n\u0131 <code>target\/classes<\/code> dizinine yerle\u015ftirir. Test kaynak kodlar\u0131 derlenmez, testler \u00e7al\u0131\u015ft\u0131r\u0131lmaz.<br \/>\n*   <code>mvn test<\/code>: <code>default<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcndeki <code>test<\/code> faz\u0131n\u0131 ve bu faza kadar olan t\u00fcm \u00f6nceki fazlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, kaynak kodlar\u0131n\u0131 derler, test kaynak kodlar\u0131n\u0131 derler ve ard\u0131ndan birim testlerini \u00e7al\u0131\u015ft\u0131r\u0131r. Test sonu\u00e7lar\u0131 <code>target\/surefire-reports<\/code> alt\u0131nda bulunur. Testler ba\u015far\u0131s\u0131z olursa, derleme durur.<br \/>\n*   <code>mvn package<\/code>: <code>default<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcndeki <code>package<\/code> faz\u0131n\u0131 ve bu faza kadar olan t\u00fcm \u00f6nceki fazlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. Bu komut, projenin kaynak kodlar\u0131n\u0131 derler, testleri \u00e7al\u0131\u015ft\u0131r\u0131r ve ba\u015far\u0131l\u0131 olursa derlenmi\u015f kodu da\u011f\u0131t\u0131labilir bir formatta (JAR, WAR, EAR) <code>target\/<\/code> dizini alt\u0131na paketler.<br \/>\n*   <code>mvn install<\/code>: <code>default<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcndeki <code>install<\/code> faz\u0131n\u0131 ve bu faza kadar olan t\u00fcm \u00f6nceki fazlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. Bu komut, <code>package<\/code> komutunun yapt\u0131\u011f\u0131 her \u015feyi yapar ve ek olarak olu\u015fturulan paketi (JAR, WAR vb.) yerel Maven deposuna (<code>~\/.m2\/repository<\/code> alt\u0131nda) y\u00fckler. Bu sayede, ayn\u0131 makinedeki di\u011fer Maven projeleri bu paketi bir ba\u011f\u0131ml\u0131l\u0131k olarak kullanabilir.<br \/>\n*   <code>mvn deploy<\/code>: <code>default<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcndeki <code>deploy<\/code> faz\u0131n\u0131 ve bu faza kadar olan t\u00fcm \u00f6nceki fazlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. Bu komut, <code>install<\/code> komutunun yapt\u0131\u011f\u0131 her \u015feyi yapar ve ek olarak olu\u015fturulan paketi uzak bir Maven deposuna (\u00f6rne\u011fin, Nexus veya Artifactory) da\u011f\u0131t\u0131r. Bu, projenin di\u011fer geli\u015ftiriciler veya CI\/CD sistemleri taraf\u0131ndan eri\u015filebilir olmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>mvn clean<\/code>: <code>clean<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcndeki <code>clean<\/code> faz\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, projenin <code>target\/<\/code> dizinini ve t\u00fcm derleme \u00e7\u0131kt\u0131lar\u0131n\u0131 siler. Genellikle bir sonraki derlemeyi temiz bir ortamda ba\u015flatmak i\u00e7in <code>mvn clean install<\/code> veya <code>mvn clean package<\/code> gibi komutlarla birlikte kullan\u0131l\u0131r.<br \/>\n*   <code>mvn clean install<\/code>: <code>clean<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcndeki <code>clean<\/code> faz\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r, ard\u0131ndan <code>default<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcndeki <code>install<\/code> faz\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, \u00f6nceki derleme \u00e7\u0131kt\u0131lar\u0131n\u0131 temizler, ard\u0131ndan projeyi derler, test eder, paketler ve yerel depoya y\u00fckler. Geli\u015ftiricilerin en s\u0131k kulland\u0131\u011f\u0131 komutlardan biridir.<br \/>\n*   <code>mvn clean deploy<\/code>: <code>clean<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcndeki <code>clean<\/code> faz\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r, ard\u0131ndan <code>default<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcndeki <code>deploy<\/code> faz\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, \u00f6nceki derleme \u00e7\u0131kt\u0131lar\u0131n\u0131 temizler, ard\u0131ndan projeyi derler, test eder, paketler ve uzak depoya da\u011f\u0131t\u0131r. Genellikle CI\/CD ortamlar\u0131nda kullan\u0131l\u0131r.<br \/>\n*   <code>mvn site<\/code>: <code>site<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcndeki <code>site<\/code> faz\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, projenin dok\u00fcmantasyon sitesini <code>target\/site<\/code> dizini alt\u0131nda olu\u015fturur.<br \/>\n*   <code>mvn site-deploy<\/code>: <code>site<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcndeki <code>site-deploy<\/code> faz\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, <code>site<\/code> komutunun yapt\u0131\u011f\u0131 her \u015feyi yapar ve olu\u015fturulan siteyi yap\u0131land\u0131r\u0131lm\u0131\u015f uzak bir sunucuya veya depoya da\u011f\u0131t\u0131r.<\/p>\n<p>Bu komutlar\u0131 ve arkas\u0131ndaki ya\u015fam d\u00f6ng\u00fcs\u00fc mekanizmas\u0131n\u0131 anlamak, Maven ile verimli bir \u015fekilde \u00e7al\u0131\u015fman\u0131n ve olas\u0131 derleme sorunlar\u0131n\u0131 gidermenin anahtar\u0131d\u0131r.<\/p>\n<h2>Derleme S\u00fcrecini \u00d6zelle\u015ftirme<\/h2>\n<p>Maven&#8217;\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fc modeli, projeler aras\u0131nda tutarl\u0131l\u0131k sa\u011flarken, ayn\u0131 zamanda <code>pom.xml<\/code> arac\u0131l\u0131\u011f\u0131yla derleme s\u00fcrecini projenin \u00f6zel ihtiya\u00e7lar\u0131na g\u00f6re \u00f6zelle\u015ftirme esnekli\u011fi sunar. Bu \u00f6zelle\u015ftirme, genellikle plugin&#8217;lerin yap\u0131land\u0131r\u0131lmas\u0131 veya varsay\u0131lan faz-hedef ba\u011flamalar\u0131n\u0131n de\u011fi\u015ftirilmesiyle yap\u0131l\u0131r.<\/p>\n<p>1.  <strong>Plugin Konfig\u00fcrasyonu<\/strong>: En yayg\u0131n \u00f6zelle\u015ftirme \u015fekli, plugin&#8217;lerin davran\u0131\u015f\u0131n\u0131 <code><configuration><\/code> etiketi alt\u0131nda ayarlamakt\u0131r. Her plugin, belirli parametreleri kabul eder ve bu parametreler arac\u0131l\u0131\u011f\u0131yla \u00e7al\u0131\u015fma \u015feklini de\u011fi\u015ftirebilirsiniz. Daha \u00f6nce verilen <code>maven-compiler-plugin<\/code> \u00f6rne\u011fi, Java s\u00fcr\u00fcm\u00fcn\u00fc ayarlayarak derleme s\u00fcrecini nas\u0131l \u00f6zelle\u015ftirebilece\u011fimizi g\u00f6stermi\u015fti. Di\u011fer \u00f6rnekler:<br \/>\n    *   <code>maven-surefire-plugin<\/code> ile belirli testleri hari\u00e7 tutma veya dahil etme.<br \/>\n    *   <code>maven-jar-plugin<\/code> ile JAR manifest dosyas\u0131na \u00f6zel giri\u015fler ekleme.<br \/>\n    *   <code>maven-resources-plugin<\/code> ile kaynak dosyalar\u0131n\u0131 filtreleme kurallar\u0131n\u0131 belirleme.<\/p>\n<p>2.  <strong>Hedeflerin Fazlara Ba\u011flanmas\u0131 (Binding)<\/strong>: Maven, bir\u00e7ok plugin hedefini varsay\u0131lan olarak belirli fazlara ba\u011flar. Ancak, projenizin \u00f6zel ihtiya\u00e7lar\u0131na g\u00f6re ek hedefleri belirli fazlara ba\u011flayabilir veya varsay\u0131lan ba\u011flamalar\u0131 de\u011fi\u015ftirebilirsiniz. Bu i\u015flem, <code>pom.xml<\/code> dosyas\u0131ndaki <code><build><\/code> b\u00f6l\u00fcm\u00fcn\u00fcn alt\u0131ndaki <code><plugins><\/code> ve <code><executions><\/code> etiketleri arac\u0131l\u0131\u011f\u0131yla yap\u0131l\u0131r.<\/p>\n<p>    \u00d6rne\u011fin, <code>exec-maven-plugin<\/code> kullanarak derleme s\u00fcrecinin bir par\u00e7as\u0131 olarak \u00f6zel bir Java s\u0131n\u0131f\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak isteyebilirsiniz. Bunu <code>process-classes<\/code> faz\u0131na ba\u011flayarak, derlenmi\u015f s\u0131n\u0131flar haz\u0131r olduktan hemen sonra bu s\u0131n\u0131f\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirsiniz:<\/p>\n<pre><code class=\"language-xml\"><build>\n        <plugins>\n            <plugin>\n                <groupId>org.codehaus.mojo<\/groupId>\n                <artifactId>exec-maven-plugin<\/artifactId>\n                <version>3.0.0<\/version>\n                <executions>\n                    <execution>\n                        <id>my-custom-execution<\/id>\n                        <phase>process-classes<\/phase> <!-- Bu faza ba\u011fla -->\n                        <goals>\n                            <goal>java<\/goal> <!-- 'java' hedefini \u00e7al\u0131\u015ft\u0131r -->\n                        <\/goals>\n                        <configuration>\n                            <mainClass>com.example.MyCustomTool<\/mainClass>\n                            <arguments>\n                                <argument>arg1<\/argument>\n                                <argument>arg2<\/argument>\n                            <\/arguments>\n                        <\/configuration>\n                    <\/execution>\n                <\/executions>\n            <\/plugin>\n        <\/plugins>\n    <\/build><\/code><\/pre>\n<p>    Bu yap\u0131land\u0131rma ile <code>mvn package<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, <code>process-classes<\/code> faz\u0131na gelindi\u011finde <code>com.example.MyCustomTool<\/code> s\u0131n\u0131f\u0131 belirtilen arg\u00fcmanlarla \u00e7al\u0131\u015ft\u0131r\u0131lacakt\u0131r.<\/p>\n<p>3.  <strong>\u00d6zel Plugin&#8217;ler Yazma<\/strong>: Daha ileri d\u00fczey \u00f6zelle\u015ftirmeler i\u00e7in, kendi Maven plugin&#8217;inizi yazabilirsiniz. Bu, Maven&#8217;\u0131n mevcut plugin&#8217;lerinin sa\u011flamad\u0131\u011f\u0131 \u00e7ok spesifik veya karma\u015f\u0131k g\u00f6revleri otomatikle\u015ftirmek istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r. Kendi plugin&#8217;inizi yazarak, kendi hedeflerinizi tan\u0131mlayabilir ve bunlar\u0131 istedi\u011finiz fazlara ba\u011flayabilirsiniz.<\/p>\n<p>Bu \u00f6zelle\u015ftirme yetenekleri, Maven&#8217;\u0131 \u00e7ok \u00e7e\u015fitli proje gereksinimlerine uyarlanabilir g\u00fc\u00e7l\u00fc bir ara\u00e7 haline getirir. Ancak, \u00f6zelle\u015ftirme yaparken Maven&#8217;\u0131n temel ya\u015fam d\u00f6ng\u00fcs\u00fc prensiplerini korumak ve a\u015f\u0131r\u0131 karma\u015f\u0131kl\u0131ktan ka\u00e7\u0131nmak \u00f6nemlidir, aksi takdirde elde edilen faydalar kaybolabilir.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Apache Maven, modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde otomasyon, tutarl\u0131l\u0131k ve verimlilik sa\u011flayan vazge\u00e7ilmez bir ara\u00e7t\u0131r. Bu makalede ele ald\u0131\u011f\u0131m\u0131z &#8220;derleme ya\u015fam d\u00f6ng\u00fcs\u00fc&#8221;, &#8220;fazlar&#8221; ve &#8220;hedefler&#8221; kavramlar\u0131, Maven&#8217;\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131n ve neden bu kadar etkili oldu\u011funun temelini olu\u015fturur.<\/p>\n<p>Ya\u015fam d\u00f6ng\u00fcs\u00fc, bir projenin ham kaynak kodundan da\u011f\u0131t\u0131ma haz\u0131r bir yap\u0131ya d\u00f6n\u00fc\u015fmesine kadar ge\u00e7en t\u00fcm s\u00fcreci tan\u0131mlayan standartla\u015ft\u0131r\u0131lm\u0131\u015f bir iskelettir. Bu iskelet, <code>default<\/code>, <code>clean<\/code> ve <code>site<\/code> olmak \u00fczere \u00fc\u00e7 ana ya\u015fam d\u00f6ng\u00fcs\u00fcne ayr\u0131l\u0131r. Her bir ya\u015fam d\u00f6ng\u00fcs\u00fc, derleme s\u00fcrecinin mant\u0131ksal ad\u0131mlar\u0131 olan &#8220;fazlardan&#8221; olu\u015fur. <code>validate<\/code> ile ba\u015flay\u0131p <code>deploy<\/code> ile biten <code>default<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn fazlar\u0131, projenin derlenmesi, test edilmesi, paketlenmesi ve da\u011f\u0131t\u0131lmas\u0131 i\u00e7in gereken t\u00fcm ad\u0131mlar\u0131 kapsar.<\/p>\n<p>Son olarak, &#8220;hedefler&#8221; plugin&#8217;ler taraf\u0131ndan ger\u00e7ekle\u015ftirilen atomik g\u00f6revlerdir ve ger\u00e7ek i\u015fi yapan mekanizmalard\u0131r. Bu hedefler, belirli fazlara ba\u011flanarak, bir faz \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda otomatik olarak \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Bu sayede, geli\u015ftiriciler sadece <code>mvn install<\/code> gibi basit bir komutla, Maven&#8217;\u0131n t\u00fcm karma\u015f\u0131k derleme ad\u0131mlar\u0131n\u0131 do\u011fru s\u0131rada ve tutarl\u0131 bir \u015fekilde y\u00fcr\u00fctece\u011finden emin olabilirler.<\/p>\n<p>Maven&#8217;\u0131n bu katmanl\u0131 yap\u0131s\u0131, geli\u015ftiricilere hem g\u00fc\u00e7l\u00fc bir otomasyon \u00e7er\u00e7evesi sunar hem de <code>pom.xml<\/code> arac\u0131l\u0131\u011f\u0131yla projenin \u00f6zel ihtiya\u00e7lar\u0131na g\u00f6re s\u00fcreci \u00f6zelle\u015ftirme esnekli\u011fi sa\u011flar. Bu temel kavramlar\u0131 derinlemesine anlamak, Maven ile daha verimli \u00e7al\u0131\u015fman\u0131n, derleme sorunlar\u0131n\u0131 daha h\u0131zl\u0131 \u00e7\u00f6zmenin ve projelerinizi daha g\u00fcvenilir bir \u015fekilde y\u00f6netmenin anahtar\u0131d\u0131r. Maven&#8217;\u0131n derleme ya\u015fam d\u00f6ng\u00fcs\u00fc modelini benimsemek, yaz\u0131l\u0131m projelerinizin kalitesini ve s\u00fcrd\u00fcr\u00fclebilirli\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri\nGiri\u015f: Maven ve Otomatik Derleme S\u00fcre\u00e7leri\nModern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, proj","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-36551","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri\" \/>\n<meta property=\"og:description\" content=\"Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri Giri\u015f: Maven ve Otomatik Derleme S\u00fcre\u00e7leri Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, proj\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-19T16:40:53+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri\",\"datePublished\":\"2025-12-19T16:40:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/\"},\"wordCount\":4067,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/\",\"name\":\"Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-19T16:40:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/","og_locale":"tr_TR","og_type":"article","og_title":"Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri","og_description":"Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri Giri\u015f: Maven ve Otomatik Derleme S\u00fcre\u00e7leri Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, proj","og_url":"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-19T16:40:53+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"22 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri","datePublished":"2025-12-19T16:40:53+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/"},"wordCount":4067,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/","url":"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/","name":"Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-19T16:40:53+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/maven-derleme-yasam-dongusu-fazlari-ve-hedefleri\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Maven Derleme Ya\u015fam D\u00f6ng\u00fcs\u00fc, Fazlar\u0131 ve Hedefleri"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=36551"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36551\/revisions"}],"predecessor-version":[{"id":36552,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36551\/revisions\/36552"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}