更新:2026-09-05 16:11

jar 打包与配置外置化

介绍 mvn 打包、jar 目录结构、配置外置化(jar 旁 config)与 IP 属地库部署。

1. 打包

cd RuleApiPro
mvn clean package -DskipTests
ls target/RuleApiPro.jar

RuleApiX 同理(JDK21,mvn -Dmaven.compiler.source=21 -Dmaven.compiler.target=21 clean package -DskipTests)。

2. jar 内的资源

打包后 jar 内包含:

  • BOOT-INF/classes/application.properties(默认配置)
  • BOOT-INF/classes/ip2region_v4.xdbip2region_v6.xdb(IP 属地库,开发/IDE 用
  • BOOT-INF/classes/mapper/*.xmlBOOT-INF/classes/*.sql

3. 配置外置化(jar 旁 config)

Spring Boot 支持 --spring.config.location 指定外部配置文件,优先级高于 jar 内:

java -jar RuleApiPro.jar \
  --spring.config.location=file:/opt/ruleapi/config/application.properties

推荐部署布局:

/opt/ruleapi/
  ├── RuleApiPro.jar              # 主程序
  ├── ip2region_v4.xdb            # IP 属地库(必放 jar 旁)
  ├── ip2region_v6.xdb
  ├── config/application.properties   # 外置配置
  └── logs/                       # 日志

为什么 xdb 必须放 jar 旁:后端 baseFull.getLocal()ApplicationHome 取 jar 路径,从 jar 父目录加载 ip2region_v4.xdb / ip2region_v6.xdb;若不在 jar 旁,IP 归属地查询返回空。

准备命令:

mkdir -p /opt/ruleapi/config /opt/ruleapi/logs
cp target/classes/application.properties /opt/ruleapi/config/
cp src/main/resources/ip2region_v4.xdb src/main/resources/ip2region_v6.xdb /opt/ruleapi/
# 然后编辑 /opt/ruleapi/config/application.properties 中的库/口令/密钥

4. 外置配置中的关键项(逐条注释)

server.port=8081

# 日志
logging.config=classpath:logback-spring.xml
logging.file=/log/RuleApi

# MySQL
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/typechoapi?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=你的密码

# 表前缀(务必与库内一致)
mybatis.configuration.variables.prefix=typecho

# Redis(会话与缓存)
spring.redis.host=127.0.0.1
spring.redis.port=6379
# spring.redis.password=

# 管理访问 KEY(管理端 webkey 校验)
webinfo.key=123456

# 数据表前缀(InstallController 用)
web.prefix=typecho

# XSS 白名单(按需)
mica.xss.allow-tags = p, audio, video
mica.xss.allow-attributes = src, controls, ...

# 上传限制
spring.servlet.multipart.max-file-size=20MB
spring.servlet.multipart.max-request-size=100MB

5. 升级 jar 的步骤

# 停服务 → 替换 jar → 启动(脚本一条龙)
cd /opt/ruleapi
./scripts/ruleapi.sh stop
cp RuleApiPro_new.jar RuleApiPro.jar
./scripts/ruleapi.sh start
# 老库升级:管理端「刷新数据表」自动补列/建表

外置 config/ 与 xdb 无需随 jar 覆盖,保持稳定。