1.2. Yeni Proje Oluşturulması#
EKSEN altyapısını kullanarak template proje üzerinden proje oluşturulabilir.
Template Proje Üzerinden Oluşturma#
- hvl-javalt-template projesi ismi uygun şekilde değiştirilerek kopyalanır. Örneğimizde bu isim
hvl-exampleolarak değiştirildi. hvl-exampleprojesi idea ile açılır.gradle.propertiesincelenir.
gradle.propertiesdosyasında proje içerisinde kullanılan versiyon bilgileri bulunmaktadır.1numaralı kısım EKSEN gradle pluginlerinin versiyonlarını göstermektedir.2numaralı kısım projenin/modülün versiyon bilgisini göstermektedir. Docker imajı çıkıldığında ve jar publish edildiğinde bu versiyon ile işaretlenmektedir.3Proje içerisinden kullanılan kütüphane ve EKSEN altyapısı bağımlılığının versiyon bilgisini göstermektedir.4Gradle ile ilgili ayarların bulunduğu bölümdür. Proje build olurken bu ayarlar kullanılır.
settings.gradleincelenir.rootProject.namesatırı proje ismini belirtmektedir. Örneğimize görehvl-exampleolarak değiştirilmelidir.gradle.extbölümünde gradle ve gradle pluginleri tarafından kullanılacak değişkenler bulunmaktadır.//Modulestagi altındaki tanımlamalar projedeki modülleri göstermektektedir. Kendi proje yapınıza göre oluşturulacak modüllerin ilk kısmı burada tanımlanacaktır.//Environmenttagi altında genel olarak proje ile ilgili bilgiler, bağımlılıkların repository bilgileri ve docker pushlama işlemleri için docker repository bilgilerini barındırmaktadır.projectaltındakipublishingInfoiçerisinde birden fazla repository tanımlanabilmektedir. Bu repositoryler JAR pushlanacağı esnada kullanılabilecek repository'ler anlamına gelir ve bunlardan biripublishingScopebilgisine verilmelidir. Böylecegradle cleanAll build publishkomutu çalıştırıldığındapublishingScopebilgisindeki değere göre uygun repository'e JAR publish edilecektir.projectaltındakirepositoriesInfoiçerisinde birden fazla repository tanımlanabilmektedir. Bu repositoryler bağımlılıkların çözüleceği tanımlardır. Her bir tanım için birden fazla repository url'i tanımlanabilmektedir. Örnektekibitnexustanımındakinamealanı, .m2 altındakisettings.xmldeki server id bilgisine karşılık gelmektedir ve bu repository'e giderkensettings.xmldekiusernamevepasswordbilgisi kullanılır.repositoriesInfoiçerisinde tanımlanan değerlerden biri alt taraftakirepositoriesScopebilgisine verilmelidir.projectaltındakibuildscriptRepositoriesInfoiçerisinde birden fazla repository tanımlanabilmektedir. Burada tanımlanan repository bilgileri gradle pluginlerinin çözüleceği repository bilgileridir.buildscriptRepositoriesInfoiçerisinde tanımlanan değerlerden biri alt taraftakibuildscriptRepositoriesScopebilgisine verilmelidir.projectaltındakidockerPublishingInfoiçerisinde birden fazla repository tanımlanabilmektedir. Burada tanımlanan bilgiler docker repository bilgileridir. Örnektekiharbortanımındakinamealanı, .docker altındakisettings.xmldeki server id bilgisine karşılık gelmektedir ve bu repository'e giderkensettings.xmldekiusernamevepasswordbilgisi kullanılır. Proje içerisindekigradle cleanAll build dockerPushkomutu çağrıldığında alt tarafta tanımlanandockerPublishingScopedeğerine göre docker imajı publish edilir.gradle.projectsLoadedbölümü genelde sabit kalmaktadır. Bu bölümde bağımlılıklar için ihtiyaç duyulan gradle plugin bağımlılıkları eklenmiştir ve bu bağımlılıkların çekilebilmesi için environment kısmında tanımlanan repositoryler projeye tanımlanmıştır.- En alt bölümde
includeveprojectişlemleri ile en yukarda//Moduleskısmında yapılan tanımlar projeye dahil edilmiştir.
- build.gradle incelenir.
projecttanımlamaları,settings.gradleda yapılan tanımları içerir. Buradaversionile modülün versiyon bilgisi belirtilir. ext altındakipublishabledeğeri modülün repository'e publish edilebilir olduğu anlamına gelir.publishTypeise modülün publish türünü belirtir, buradaki değerlerBOM,JAR, veEXECUTABLE_JARdeğerlerini alabilir.- BOM: Parent olarak kullanılacak, sadece pom.xml üretip publish etmek isteyen modüllerde kullanılır.
- JAR: Sadece jar üretilip repository'e publish edilecek modüllerde kullanılır. (Ör. Client, common, provider modüller)
- EXECUTABLE_JAR: Bu tür sadece server modüllerde kullanılır ve docker imajı oluşturulmak istendiğinde bu türe ait modüller taranarak docker imajları oluşturulur. Server modüllerinde
publishabledeğerleri genelde false'dır.
allprojectsaltındaki tanımlamalar her proje için genelde sabittir ve root proje dahil tüm alt modüllerde devrede olan bölümdür. Sadecegroupbilgisi değiştirilmesi gerekmektedir.groupbilgisi, repositorydeki group bilgisine denk gelmektedir.subprojectsaltındaki tanımlamalar her proje için genelde sabittir ve root proje hariç tüm alt modüllerde devrede olan bölümdür. Bu bölümde mavenBom tanımlamaları yapılmaktadır ve örnekte EKSEN bom'u verilmiştir.dependenciesaltındaki tanımlamalar her proje için genelde sabit olup alt modüllerin ihtiyaç duyacağı, EKSEK bağımlılıklarını da içeren temel bağımlılıkları içermektedir.