31 Temmuz 2023 Pazartesi

Gradle Daemon Nedir?

Giriş
Açıklaması şöyle. Gradle Daemon arka planda çalışır. Çünkü Gradle'ı ayağa kaldırmak ve ilklendirmek çok uzun sürüyor. 
Gradle runs on the Java Virtual Machine (JVM) and uses several supporting libraries that require a non-trivial initialization time. As a result, it can sometimes seem a little slow to start. The solution to this problem is the Gradle Daemon: a long-lived background process that executes your builds much more quickly than would otherwise be the case. We accomplish this by avoiding the expensive bootstrapping process and leveraging caching by keeping data about your project in memory.
Gradle Daemon Aşamaları
Açıklaması şöyle
Once the Gradle Client JVM establishes a connection with an idle daemon that is compatible, it transmits the required build data, such as command line arguments, project directory, and environment variables. The daemon then initiates the build process and returns the build output, including logs and standard output/error, to the client via a local socket connection.
Gradle Daemon 3 aşamada çalışır
1. Initialization Phase
2. Configuration Phase
3. Execution Phase

1. Initialization Phase
Yapılandırma aşamasında kullanılacak Java nesneleri ilklendirilir

2. Configuration Phase
Projenin gradle script'i yüklenir

3. Execution Phase
Task ve ona bağlı action'lar çalıştırılır

6 Aralık 2022 Salı

jib plugin

Örnek
Şöyle yaparız
plugins {
...
  id 'com.google.cloud.tools.jib' version '3.3.0' //You just need to add a plugin
}

jib {
  from {
    image = 'openjdk:alpine' //You may leave it empty to use a default image
  }
  to {
    image = 'alekseinovikov/jib-example' //By default Jib pushes images into Docker Hub
    tags = ['0.1', 'latest']
    auth {
      username = 'username' //Docker Hub requires authentication
      password = 'password'
    }
  }
  container {
    jvmFlags = ['-Xms128m'] //You may pass additional flags
    ports = ['8080'] //Open ports
    format = 'OCI' //Even choose a format of the image you are building
  }
}

5 Aralık 2022 Pazartesi

avro plugin

Örnek
Şöyle yaparız. .avsc dosyalarından kotlin kodu üretir.
plugins {
  ... 
  id("com.github.davidmc24.gradle.plugin.avro") version ("1.2.0")
}

tasks.withType<com.github.davidmc24.gradle.plugin.avro.GenerateAvroJavaTask> {
    source(file("${projectDir}\\src\\main\\resources\\avro"))
    setOutputDir(file("${projectDir}\\src\\main\\kotlin"))
}

avro {
    fieldVisibility.set("private")
    customConversion(org.apache.avro.Conversions.UUIDConversion::class.java)
}


3 Aralık 2022 Cumartesi

Software Bill Of Materials - SBOM

Giriş
Software Bill Of Materials - SBOM yazısına bakabilirsiniz.

1. CycloneDX
Şu satırı dahil ederiz
plugins {
  id 'org.cyclonedx.bom' version '1.7.2'
}
Şöyle yaparız. build işlemi sonucunda SBOM da üretilir.
cyclonedxBom {
  includeConfigs = ["runtimeClasspath"]
  skipConfigs = ["compileClasspath", "testCompileClasspath"]
  projectType = "application"
  schemaVersion = "1.4"
  destination = file("build/reports")
  outputName = "CycloneDX-Sbom"
  outputFormat = "all"
  includeBomSerialNumber = true
  componentVersion = "2.0.0"
}
...
build.finalizedBy('cyclonedxBom'

2 Ekim 2022 Pazar

unbroken-dome plugin - Integration Test İçindir

Şöyle yaparız
id 'org.unbroken-dome.test-sets' version '4.0.0'

testSets {
   integrationTest
}
Çalıştırmak için şöyle yaparız
./gradlew integrationTest




28 Eylül 2022 Çarşamba

run Task

Örnek
Şöyle yaparız
gradle run

sonar plugin

Plugin Tanımlama
Şöyle yaparız
plugins { ... id "org.sonarqube" version "3.3" }
Plugin Properties
Property değeleri gradle.properties veya build.gradle dosyalarında tanımlanabilir.

1. gradle.properties
Şöyle yaparız
systemProp.sonar.host.url=http://localhost:9000 systemProp.sonar.login=<sonar-key>
2. build.gradle
Eğer Sonar master'dan farklı branch'lere bakabilen paralı sürümse şöyle yaparız
sonarqube { properties { property "sonar.branch.name", System.getenv('BRANCH_NAME') } }
Örnek
Şöyle yaparız
sonarqube { properties { property "sonar.projectKey", "luizgustavocosta_16-bits-zero-to-hero" property "sonar.organization", "luizgustavocosta" property "sonar.host.url", "https://sonarcloud.io" } }
Plugin Targetları
sonarqube target
Static code analysis işlemini başlatır. Projeyi derlemek için şöyle yaparız
./gradlew clean build
Test sonuçlarını Sonar'a göndermek için şöyle yaparız
./gradlew sonarqube -Dsonar.projectKey=spring-boot-simple
-Dsonar.host.url=http://localhost:9000
-Dsonar.login=da55e6a2a39868ae22bd77aaf48e61c26b19d8b7

Gradle Daemon Nedir?

Giriş Açıklaması  şöyle . Gradle Daemon arka planda çalışır. Çünkü Gradle'ı ayağa kaldırmak ve ilklendirmek çok uzun sürüyor.  Gradle ru...