Gradle
Főnév
Gradle (tsz. Gradles)
- (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
- Initialization – Projekt(ek) betöltése.
- Configuration – Build fájl értelmezése.
- 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:
- OWASP Dependency Check
gradle-dependency-check-plugin
🧠 Előnyök összefoglalva
✅ Nagyon rugalmas ✅ Gyors – 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.