# Gradle Kotlin DSL Standards
## Rule
All Gradle build files MUST use Kotlin DSL (.gradle.kts). Groovy DSL (.gradle) is not permitted for new projects.
## Format
```kotlin
// build.gradle.kts — Kotlin DSL
plugins {
alias(libs.plugins.kotlin.jvm)
alias(libs.plugins.spring.boot)
}
dependencies {
implementation(libs.spring.boot.starter)
testImplementation(libs.bundles.testing)
}
```
## Requirements
1. **File extension** — always use `.gradle.kts`, never `.gradle`
2. **Plugin declarations** — use `alias(libs.plugins.x)` from Version Catalog
3. **Dependencies** — use `libs.x` accessors from Version Catalog
4. **Type-safe accessors** — use generated accessors, not string-based APIs
5. **String literals** — use double quotes (`""`), not single quotes
6. **Task configuration** — use `tasks.named<Type>("name")` for type-safe access
## Examples
### Good
```kotlin
tasks.named<Test>("test") {
useJUnitPlatform()
maxParallelForks = Runtime.getRuntime().availableProcessors()
}
tasks.named<Jar>("jar") {
archiveBaseName.set("my-app")
}
```
### Bad
```groovy
// Groovy DSL — not permitted for new projects
test {
useJUnitPlatform()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter:3.3.0'
}
```
## Enforcement
CI build scripts should fail if .gradle files (without .kts) are detected in new projects. Use pre-commit hooks to prevent adding Groovy DSL files.