| | |
| | | """TrafficAudit 一键打包脚本:前端构建 -> 内嵌进后端 jar -> 组装部署包 -> 打 zip |
| | | 用法:python package-deploy.py [--no-build] |
| | | """ |
| | | import io, os, sys, shutil, zipfile, subprocess, datetime |
| | | import io, os, sys, shutil, zipfile, subprocess, datetime, xml.etree.ElementTree as ET |
| | | |
| | | ROOT = os.path.dirname(os.path.abspath(__file__)) |
| | | WEB = os.path.join(ROOT, "traffic-audit-web") |
| | | SERVER = os.path.join(ROOT, "traffic-audit-server") |
| | | STATIC = os.path.join(SERVER, "src", "main", "resources", "static") |
| | | _pom_tree = ET.parse(os.path.join(SERVER, "pom.xml")) |
| | | _pom_ns = {"m": "http://maven.apache.org/POM/4.0.0"} |
| | | PRODUCT_VERSION = (_pom_tree.getroot().findtext("m:version", namespaces=_pom_ns) or "").strip() |
| | | if not PRODUCT_VERSION: |
| | | raise SystemExit("Missing <version> in traffic-audit-server/pom.xml") |
| | | STAMP = datetime.datetime.now().strftime("%Y%m%d") |
| | | STAGE = os.path.join(ROOT, "deploy", "traffic-audit-deploy-" + STAMP) |
| | | ZIP = os.path.join(ROOT, "traffic-audit-deploy-" + STAMP + ".zip") |
| | | JAR_NAME = "traffic-audit-server-1.0.0-SNAPSHOT.jar" |
| | | STAGE = os.path.join(ROOT, "deploy", "traffic-audit-deploy-" + STAMP + "-v" + PRODUCT_VERSION) |
| | | ZIP = os.path.join(ROOT, "traffic-audit-deploy-" + STAMP + "-v" + PRODUCT_VERSION + ".zip") |
| | | JAR_NAME = "traffic-audit-server.jar" |
| | | SKIP_DOC_DIRS = {"ai_demo", "usage_screenshots", "功能测试报告", "工作日结"} |
| | | |
| | | def rmtree_force(path): |
| | |
| | | io.open(os.path.join(be, "start-backend.cmd"), "w", encoding="utf-8", newline="\r\n").write(START_CMD) |
| | | io.open(os.path.join(be, "start-backend.sh"), "w", encoding="utf-8", newline="\n").write(START_SH) |
| | | io.open(os.path.join(STAGE, "frontend", "nginx.conf.example"), "w", encoding="utf-8", newline="\n").write(NGINX) |
| | | io.open(os.path.join(STAGE, "README-部署说明.txt"), "w", encoding="utf-8", newline="\r\n").write(README) |
| | | io.open(os.path.join(STAGE, "README-部署说明.txt"), "w", encoding="utf-8", newline="\r\n").write(README.replace("{version}", PRODUCT_VERSION)) |
| | | |
| | | print("[5/6] 打 zip ...") |
| | | if os.path.isfile(ZIP): |
| | |
| | | echo 前端已内嵌,直接访问 8090 即可(不需要 nginx) |
| | | echo 日志显示在本窗口,关闭窗口即停止服务 |
| | | echo ============================================ |
| | | java -jar traffic-audit-server-1.0.0-SNAPSHOT.jar |
| | | java -jar traffic-audit-server.jar |
| | | pause |
| | | """ |
| | | |
| | | START_SH = u"""#!/bin/sh |
| | | cd "$(dirname "$0")" || exit 1 |
| | | echo "TrafficAudit 启动中:http://localhost:8090 (Ctrl+C 停止)" |
| | | java -jar traffic-audit-server-1.0.0-SNAPSHOT.jar 2>&1 | tee app.log |
| | | java -jar traffic-audit-server.jar 2>&1 | tee app.log |
| | | """ |
| | | |
| | | NGINX = u"""# 前端 nginx 配置示例(只有在不想用「jar 内嵌前端」时才需要) |
| | |
| | | } |
| | | """ |
| | | |
| | | README = u"""TrafficAudit 交通货运统计审核系统 —— 部署包({stamp}) |
| | | README = u"""TrafficAudit 交通货运统计审核系统 —— 部署包({stamp},版本 v{version}) |
| | | ======================================================== |
| | | |
| | | 【目录结构】 |
| | | backend/ |
| | | traffic-audit-server-1.0.0-SNAPSHOT.jar 后端程序(含全部依赖,**已内嵌前端**) |
| | | traffic-audit-server.jar 后端程序(含全部依赖,**已内嵌前端**,固定文件名) |
| | | docs/ 报表模板与运行数据目录(必需,勿删) |
| | | application.yml 外部配置(改这里即可,无需重新打包) |
| | | start-backend.cmd / start-backend.sh 启动脚本 |