원클릭으로
javaspring-boot
Java 应用构建打包、JVM 调优、systemd 部署、Docker 化部署、常见启动故障排查
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Java 应用构建打包、JVM 调优、systemd 部署、Docker 化部署、常见启动故障排查
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
生成或审计模块的 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.
| 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