Appearance
Spring Boot 插件
Spring Boot Gradle 插件简化了 Spring Boot 应用的构建和打包。
基本配置
kotlin
plugins {
java
id("org.springframework.boot") version "3.2.0"
id("io.spring.dependency-management") version "1.1.4"
}
group = "com.example"
version = "0.0.1-SNAPSHOT"
java {
sourceCompatibility = JavaVersion.VERSION_17
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-security")
runtimeOnly("com.mysql:mysql-connector-j")
compileOnly("org.projectlombok:lombok")
annotationProcessor("org.projectlombok:lombok")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
tasks.named<Test>("test") {
useJUnitPlatform()
}常用任务
bash
# 构建可执行 JAR
./gradlew bootJar
# 运行 Spring Boot 应用
./gradlew bootRun
# 构建 WAR
./gradlew bootWar
# 生成构建信息(写入 build-info.properties)
./gradlew bootBuildInfobootJar 配置
kotlin
tasks.named<org.springframework.boot.gradle.tasks.bundling.BootJar>("bootJar") {
archiveFileName.set("app.jar")
// 主类(通常自动检测)
mainClass.set("com.example.Application")
// 分层 JAR(优化 Docker 镜像构建)
layered {
enabled.set(true)
}
}bootRun 配置
kotlin
tasks.named<org.springframework.boot.gradle.tasks.run.BootRun>("bootRun") {
// 激活 dev profile
args("--spring.profiles.active=dev")
// JVM 参数
jvmArgs("-Xmx512m", "-Dfile.encoding=UTF-8")
// 环境变量
environment("DB_HOST", "localhost")
// 热重载(配合 DevTools)
sourceResources(sourceSets["main"])
}dependency-management 配置
kotlin
dependencyManagement {
imports {
// 导入 Spring Cloud BOM
mavenBom("org.springframework.cloud:spring-cloud-dependencies:2023.0.0")
}
dependencies {
// 单独覆盖某个版本
dependency("com.google.guava:guava:32.0.1-jre")
}
}Docker 分层构建
dockerfile
# Dockerfile(利用 Spring Boot 分层 JAR 优化)
FROM eclipse-temurin:17-jre as builder
WORKDIR /app
COPY build/libs/*.jar app.jar
RUN java -Djarmode=layertools -jar app.jar extract
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY --from=builder /app/dependencies/ ./
COPY --from=builder /app/spring-boot-loader/ ./
COPY --from=builder /app/snapshot-dependencies/ ./
COPY --from=builder /app/application/ ./
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]下一步
- Kotlin 插件 - Kotlin 项目构建
- 构建 Spring Boot 项目 - 完整实战示例