with one click
javaspring-boot
Java 应用构建打包、JVM 调优、systemd 部署、Docker 化部署、常见启动故障排查
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Java 应用构建打包、JVM 调优、systemd 部署、Docker 化部署、常见启动故障排查
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | Java/Spring Boot 部署 |
| description | Java 应用构建打包、JVM 调优、systemd 部署、Docker 化部署、常见启动故障排查 |
| version | 1.0.0 |
# Maven
mvn clean package -DskipTests
# 产物:target/<app>.jar
# Gradle
./gradlew bootJar
# 产物:build/libs/<app>.jar
# 验证 jar 是否可运行
java -jar target/<app>.jar --server.port=8080
# 基础配置
java -Xms512m -Xmx1024m -jar app.jar
# 生产推荐(容器环境)
java \
-XX:+UseContainerSupport \
-XX:MaxRAMPercentage=75.0 \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/var/log/app/heapdump.hprof \
-Djava.security.egd=file:/dev/./urandom \
-jar app.jar
常用 JVM 参数说明:
| 参数 | 作用 |
|---|---|
-Xms / -Xmx | 初始/最大堆内存 |
-XX:MaxRAMPercentage | 容器场景按内存百分比分配(替代固定值) |
-XX:+UseG1GC | G1 垃圾收集器(JDK 9+ 默认) |
-XX:+UseZGC | ZGC 低延迟收集器(JDK 17+ 推荐) |
创建 /etc/systemd/system/myapp.service:
[Unit]
Description=My Spring Boot App
After=network.target
[Service]
Type=simple
User=appuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /opt/myapp/app.jar --spring.profiles.active=prod
SuccessExitStatus=143
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now myapp
sudo systemctl status myapp
sudo journalctl -u myapp -f # 查看日志
# 多阶段构建
FROM maven:3.9-eclipse-temurin-21 AS build
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src ./src
RUN mvn package -DskipTests
FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-XX:MaxRAMPercentage=75.0", "-jar", "app.jar"]
docker build -t myapp:latest .
docker run -d -p 8080:8080 --name myapp \
-e SPRING_PROFILES_ACTIVE=prod \
-v /var/log/myapp:/var/log/myapp \
myapp:latest
logback-spring.xml 推荐:
# 查看 Spring Boot 运行日志
tail -f /var/log/myapp/app.log
journalctl -u myapp --since "1 hour ago"
| 问题 | 排查 |
|---|---|
| 端口占用 | lsof -i :8080 或 ss -tlnp | grep 8080 |
| 数据库连不上 | 检查 spring.datasource.url、网络、防火墙 |
| OOM 崩溃 | 增大 -Xmx,检查 heapdump 分析内存泄漏 |
| Bean 创建失败 | 看完整堆栈的 Caused by,通常是配置项缺失或类型错误 |
| 启动后立即退出 | 确认是 web 项目(有 spring-boot-starter-web 依赖) |
# 查看 Java 进程
jps -lv
# 线程 dump(排查死锁/CPU 高)
jstack <pid> > thread_dump.txt
# 堆内存分析
jmap -heap <pid>
jmap -histo:live <pid> | head -30
# Arthas(阿里开源,推荐)
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
生成或审计模块的 SPEC.md。使用场景:用户要求"给 XX 模块写 spec"、"审计所有 spec"、"检查 spec 是否过期"。
Automates SailFish release workflow: fix build/type errors, update CHANGELOG (EN + CN), run npm version with pre/post hooks. Use when the user asks to release, 发版, 发布, bump version, or update changelog.
后端代码修改后,通过 CLI 测试验证功能正确性。使用场景:修改了 electron/services/ 下的代码需要测试、准备提交代码前跑回归、用户要求"跑测试"/"验证一下"。
完成新功能开发或较大修改后,使用本机 Claude CLI 进行代码审查。
使用 ts-morph 静态分析工具查询代码结构(类层次、方法签名、引用、依赖等),替代手动读源码。使用场景:需要了解类的方法/属性、继承链、符号引用、文件结构、依赖关系时。
When committing or staging changes, only include files related to the current task or conversation; do not stage or commit unrelated modifications. Use when the user asks to commit, stage, 提交, or when preparing to run git add/commit.