Register events modules in Gradle build and refactor VeranstaltungController: remove unused use cases, streamline request handling, and improve error responses.
This commit is contained in:
@@ -100,16 +100,57 @@ val myNewProperty by extra("Initialwert")
|
||||
val myExtraProperty: String by extra
|
||||
```
|
||||
|
||||
### Kotlin DSL Plugin (`kotlin-dsl`)
|
||||
Dieses Plugin ist essenziell für die Entwicklung von Build-Logik in Kotlin (z.B. in `buildSrc` oder für Convention Plugins). Es wendet automatisch das Kotlin-Plugin an und fügt notwendige Abhängigkeiten wie `kotlin-stdlib` und `gradleKotlinDsl()` hinzu.
|
||||
## Best Practices im Projekt
|
||||
|
||||
### Plugin-Management
|
||||
Im Projekt wird ein zentraler **Version Catalog** (`gradle/libs.versions.toml`) verwendet. Plugins sollten **immer** über Aliase referenziert werden.
|
||||
|
||||
**Korrekt:**
|
||||
```kotlin
|
||||
// buildSrc/build.gradle.kts
|
||||
plugins {
|
||||
`kotlin-dsl`
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
alias(libs.plugins.kotlinJvm)
|
||||
alias(libs.plugins.spring.boot)
|
||||
}
|
||||
```
|
||||
|
||||
**Falsch:**
|
||||
```kotlin
|
||||
plugins {
|
||||
kotlin("jvm") // Veraltet/Inkonsistent
|
||||
id("org.springframework.boot") version "3.4.0" // Version gehört in den Catalog
|
||||
}
|
||||
```
|
||||
|
||||
### Projekt-Referenzen (Accessors)
|
||||
Aufgrund der tiefen Modulstruktur (`backend/services/...`) müssen Projekt-Referenzen den vollen Pfad abbilden, um typsicher zu sein.
|
||||
|
||||
**Korrekt:**
|
||||
```kotlin
|
||||
dependencies {
|
||||
implementation(projects.backend.services.events.eventsDomain)
|
||||
}
|
||||
```
|
||||
|
||||
**Falsch:**
|
||||
```kotlin
|
||||
dependencies {
|
||||
implementation(projects.events.eventsDomain) // Schlägt fehl, wenn nicht direkt unter Root
|
||||
}
|
||||
```
|
||||
|
||||
### Spring Boot vs. Library
|
||||
* **Services** (ausführbar) nutzen `alias(libs.plugins.spring.boot)` und den `springBoot { mainClass = ... }` Block.
|
||||
* **Libraries/Domains** nutzen nur `alias(libs.plugins.kotlinJvm)` (oder Multiplatform) und definieren keine Main-Class.
|
||||
|
||||
### Kotlin Multiplatform (KMP)
|
||||
Für Module, die sowohl im Backend als auch im Frontend (Compose) genutzt werden (z.B. `api`, `common`), wird das KMP-Plugin verwendet:
|
||||
```kotlin
|
||||
plugins {
|
||||
alias(libs.plugins.kotlinMultiplatform)
|
||||
}
|
||||
|
||||
kotlin {
|
||||
jvm()
|
||||
js(IR) { browser() }
|
||||
}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user