Ana içeriğe atla

maven işleyişi hakkında

Maven ile ilk tanışılınca anlaşılmakta güçlük çekilen bir nokta olan lifecycle, phase, goal, plug-in kavramlarının birbirleri ile ilişkilerini kısaca anlatalım,

Maven, bilindigi gibi plug-in ler üzerine kurulu bir sistem. Bu plug-in yapısının kesinlikle en güzel yanlarından biri, plug-inin ihtiyaç duyuldugu anda repositorylerden o anda indirilmesi. Bir digeri de tabiki plug-inler yazmak sureti ile ucu açık sonsuz geliştirme ortamı sunması. Osgi kavramında oldugu gibi merkezde duran bir engine diyebilecegimiz core uygulama en temel bileşenleri bile ihtiyaç duydugu zaman localine alıyor, veya kendi yazmış oldugumuz uygulamaları sisteme dahil ediyor.

Plug-in ler içlerinde sınırsız sayıda Goal adı verilen uygulama parçacıklarından oluşur.Bu uygulama parçacıklarını örnegin konsoldan


mvn dependency:copy-dependencies


komut satırı ile çagırılabilir. Yukarıda ki örnekte, maven bizim için dependencies (maven-dependency-plugin, maven'in default plug-inlerinden biridir) plug-in inden copy-dependencies goal'ünü çalıştıracaktır.

Ancak genel kullanım biraz daha farklı olarak, goal olarak adlandırdıgımız asıl işleri, phase denen mantıksal bölümlere bağlamaktır. Maven bizim için genel bir şablon hazırlamıştır.Bu şablon içerisinde clean, default, site şeklinde tanımlanan 3 temel lifecycle vardır(burası çok özemli, sadece 3 tane default lifecycle tanımlanmıştır).Her biri kendi içerisinde phase lerden oluşmaktadır. Bilgi. Bu phaselar içerisinde default olarak belirli goal ları çagırmaktadır.

3 phasedan oluşan clean lifecycle'ını ele alırsak,
pre-clean, clean, post-clean phase'larını sırası ile çagırmaktadır. Herbir phase altında birden fazla goal olabilmektedir. Eger bir phase altında tanımlanan goal yoksa o phase esgeçilmektedir. Maven'ı ortam olarak kullanmanın en güzel yanı da burada ortaya çıkmaktadır.

Örnegin projemizde clean cycle ını kullanmak istedik, ama bununla beraber, bu cycle'ı her çagırdıgımızda bazı temel yedekleme işleride yapmak istiyoruz, ve bunun plugin'ini de yazdık(bu kısım web de bolca vardır ayrıca burada da işlenecektir) yapmamız gereken tek şey, ilgili projenin pom.xml inde tanımlama yapmak, şöyleki ;





com.onder.plugins
maven-onder-plugin


backup
pre-clean

backup


/home/faruk/yedek/${project.artifactId}








Yukarıdaki tanımı yapmamızla beraber, ilgili proje için


maven clean


komutunu çagırdıgımızda ,

3 phase den oluşan clean cycle'ı pre-clean phase'ına geldiginde bizim tanımlamış oldugumuz plug-ini, tanımlamış oldugumuz parametreleri de alarak çalıştıracaktır.Ve sonrasında clean phase'ını, sonrasında post-clean phase'ını çalıştıracaktır.Bu çalışma işleyişinde;

pre-clean phaseında bizim tanımlamış oldugumuz onder:backup goal'u, clean phase'ında default tanımlanmış olan clean:clean goal'u çalışacaktır. sonrasında post-clean phase'ına gelecektir ancak burada tanımlanmış olan herhangi bir task olmadıgı için çalışmadan bu phase atlanarak işlem sona erecektir.

Uzun bir cümle olarak ifade etmek gerekirse, maven bizim için, üzerinde noktalar olan (phase) düz bir çizgi çizmiştir (lifecycle). Maven bu noktalara baglanan taskları (goal) sırası ile yapmaktadır. Eger bir noktada görev yoksa diger noktaya geçmek şeklinde ilerlemektedir.Her bir noktaya ayrı task tanımlama imkanı sunarak çizgi üzerinde hareket imkanı saglamaktadır.

Ancak burda ilerleyiş her zaman ileri olarak tek yönlüdür,

Yorumlar

  1. Ayrıca kullanabilecegimiz hazır yazılmış cillop gibi plug-inlere de şuradan erişilebilir..

    http://maven.apache.org/plugins/index.html

    YanıtlaSil

Yorum Gönder