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-example
olarak değiştirildi. hvl-example
projesi idea ile açılır.gradle.properties
incelenir.gradle.properties
dosyasında proje içerisinde kullanılan versiyon bilgileri bulunmaktadır.1
numaralı kısım EKSEN gradle pluginlerinin versiyonlarını göstermektedir.2
numaralı 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.3
Proje içerisinden kullanılan kütüphane ve EKSEN altyapısı bağımlılığının versiyon bilgisini göstermektedir.4
Gradle ile ilgili ayarların bulunduğu bölümdür. Proje build olurken bu ayarlar kullanılır.
settings.gradle
incelenir.rootProject.name
satırı proje ismini belirtmektedir. Örneğimize görehvl-example
olarak değiştirilmelidir.gradle.ext
bölümünde gradle ve gradle pluginleri tarafından kullanılacak değişkenler bulunmaktadır.//Modules
tagi 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.//Environment
tagi 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.project
altındakipublishingInfo
içerisinde birden fazla repository tanımlanabilmektedir. Bu repositoryler JAR pushlanacağı esnada kullanılabilecek repository'ler anlamına gelir ve bunlardan biripublishingScope
bilgisine verilmelidir. Böylecegradle cleanAll build publish
komutu çalıştırıldığındapublishingScope
bilgisindeki değere göre uygun repository'e JAR publish edilecektir.project
altındakirepositoriesInfo
iç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. Örnektekibitnexus
tanımındakiname
alanı, .m2 altındakisettings.xml
deki server id bilgisine karşılık gelmektedir ve bu repository'e giderkensettings.xml
dekiusername
vepassword
bilgisi kullanılır.repositoriesInfo
içerisinde tanımlanan değerlerden biri alt taraftakirepositoriesScope
bilgisine verilmelidir.project
altındakibuildscriptRepositoriesInfo
içerisinde birden fazla repository tanımlanabilmektedir. Burada tanımlanan repository bilgileri gradle pluginlerinin çözüleceği repository bilgileridir.buildscriptRepositoriesInfo
içerisinde tanımlanan değerlerden biri alt taraftakibuildscriptRepositoriesScope
bilgisine verilmelidir.project
altındakidockerPublishingInfo
içerisinde birden fazla repository tanımlanabilmektedir. Burada tanımlanan bilgiler docker repository bilgileridir. Örnektekiharbor
tanımındakiname
alanı, .docker altındakisettings.xml
deki server id bilgisine karşılık gelmektedir ve bu repository'e giderkensettings.xml
dekiusername
vepassword
bilgisi kullanılır. Proje içerisindekigradle cleanAll build dockerPush
komutu çağrıldığında alt tarafta tanımlanandockerPublishingScope
değerine göre docker imajı publish edilir.gradle.projectsLoaded
bö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
include
veproject
işlemleri ile en yukarda//Modules
kısmında yapılan tanımlar projeye dahil edilmiştir.
- build.gradle incelenir.
project
tanımlamaları,settings.gradle
da yapılan tanımları içerir. Buradaversion
ile modülün versiyon bilgisi belirtilir. ext altındakipublishable
değeri modülün repository'e publish edilebilir olduğu anlamına gelir.publishType
ise modülün publish türünü belirtir, buradaki değerlerBOM
,JAR
, veEXECUTABLE_JAR
değ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
publishable
değerleri genelde false'dır.
allprojects
altındaki tanımlamalar her proje için genelde sabittir ve root proje dahil tüm alt modüllerde devrede olan bölümdür. Sadecegroup
bilgisi değiştirilmesi gerekmektedir.group
bilgisi, repositorydeki group bilgisine denk gelmektedir.subprojects
altı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.dependencies
altı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.