Ugrás a tartalomhoz

Gradle

A Wikiszótárból, a nyitott szótárból


Főnév

Gradle (tsz. Gradles)

  1. (informatika) A Gradle egy nyílt forráskódú build automatizáló eszköz, amelyet Java, Kotlin, Groovy, Android, és más nyelvekhez is használnak. A Gradle célja, hogy hatékonyan kezelje a szoftverfordítást, csomagolást, tesztelést, telepítést, és függőségek kezelését. Modern alternatívája a régebbi eszközöknek, mint az Ant és a Maven.



📜 Történeti háttér

  • 2007: Hans Dockter alapította.
  • Cél: Rugalmasság + teljesítmény.
  • Technológiai alap: Groovy (később Kotlin DSL is).
  • Android Studio 2013 óta a Gradle-t használja alapértelmezett build eszközként.



🚀 Miért használjuk?

  • Deklaratív és imperatív stílus keveréke.
  • Gyors (incremental build, build cache).
  • Plugin-alapú és bővíthető.
  • Multi-project build támogatás.
  • CI/CD integráció (pl. Jenkins, GitHub Actions, GitLab CI).



📁 Gradle projekt szerkezete

my-app/
├── build.gradle
├── settings.gradle
├── gradle.properties
├── src/
│   └── main/
│       └── java/
└── build/
  • build.gradle: a build logika (Groovy vagy Kotlin DSL).
  • settings.gradle: több modul esetén a projektek definiálása.
  • gradle.properties: konfigurációs beállítások.
  • build/: ide kerül a fordított kód, JAR fájl stb.



🔧 Alapvető fogalmak

1. Task

A Gradle egy task-alapú rendszer – minden művelet egy Task.

task hello {
    doLast {
        println 'Hello Gradle!'
    }
}

2. Plugin

Előre definiált funkciók, amelyeket hozzáadhatunk:

plugins {
    id 'java'
}

3. Függőségkezelés

dependencies {
    implementation 'com.google.guava:guava:31.1-jre'
    testImplementation 'junit:junit:4.13.2'
}
  • implementation: futásidőben és fordításkor is kell.
  • testImplementation: csak teszteléshez kell.
  • api, compileOnly, runtimeOnly – további konfigurációk.



🧪 Tesztelés

test {
    useJUnitPlatform()
    testLogging {
        events "passed", "skipped", "failed"
    }
}

🔄 Build ciklus

  1. Initialization – Projekt(ek) betöltése.
  2. Configuration – Build fájl értelmezése.
  3. Execution – Task-ok futtatása.



🧱 Multi-module build

settings.gradle:

rootProject.name = 'my-app'
include 'moduleA', 'moduleB'

Struktúra:

my-app/
├── settings.gradle
├── moduleA/
│   └── build.gradle
├── moduleB/
│   └── build.gradle

🧩 Kotlin DSL

A modern build.gradle fájl Kotlin nyelven:

plugins {
    kotlin("jvm") version "1.9.0"
}

dependencies {
    implementation(kotlin("stdlib"))
}

📦 Csomagolás

jar {
    manifest {
        attributes(
            'Main-Class': 'com.example.Main'
        )
    }
}

⚙️ Hasznos parancsok

Parancs Funkció
gradle build Fordít, tesztel, csomagol
gradle clean Törli a build/ könyvtárat
gradle tasks Elérhető task-ok listázása
gradle dependencies Függőségek megjelenítése
gradle --scan Teljes build riport



🧠 További jellemzők

  • Daemon: gyorsabb ismételt build.
  • Build cache: korábban lefutott task-ok eredményeit tárolja.
  • Parallel execution: több projekt párhuzamos fordítása.
  • Custom plugin: saját build logika írása Java/Kotlin/Groovy nyelven.



🧰 Plugin példák

Plugin Cél
java Java projekt
application Futtatható JAR készítése
kotlin Kotlin támogatás
android Android fejlesztés
checkstyle, spotbugs Stílus és kódminőség ellenőrzés



🌐 CI/CD használat

gradle build beilleszthető Jenkins pipeline-ba vagy GitHub Actions-be:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
      - name: Build with Gradle
        run: ./gradlew build

🔒 Függőségek biztonsága

Használható eszközök:



🧠 Előnyök összefoglalva

✅ Nagyon rugalmasGyors – Daemon, cache, parallel build ✅ Támogatott az Android Studio-ban ✅ Bővíthető saját task-okkal, pluginekkel ✅ Jó CI/CD integráció



⚠️ Hátrányok

⚠️ Tanulási görbe meredek lehet ⚠️ Hibakeresés DSL hibáknál időigényes lehet ⚠️ Kotlin DSL dokumentáció kevesebb, mint Groovy DSL



🧭 TL;DR

Gradle egy modern, hatékony, plugin-alapú build rendszer Java/Kotlin/Android projektekhez. Segítségével automatizálható a fordítás, tesztelés, csomagolás és telepítés. Nagy projektek esetén különösen előnyös a gyorsasága és bővíthetősége miatt.