mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-09 16:30:29 +08:00
Initial commit: reorganized source tree
- backend/: 13 Maven modules (cw-elevator-application, cloudwalk-cloud, intelligent-cwoscomponent, ninca-crk, etc.) - frontend/: 4 Vue projects (elevator-front, cwos-portal, alarm-front, front_acs) + decompiled + scripts - scripts/: build, test-env, tools (Docker Compose, service templates, API parity) - docs/: AGENTS.md, superpowers specs, architecture docs - .gitignore: standard Java/Maven exclusions Moved from legacy maven-*/ root layout to backend/ organized structure.
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
# 体积大,由 sync-jars.sh 生成;属性文件可版本管理
|
||||
*.jar
|
||||
|
||||
# 运行/调试产生的日志不纳入版本库
|
||||
**/logs/*.log
|
||||
@@ -0,0 +1,126 @@
|
||||
# 电梯应用双版本同路径部署
|
||||
|
||||
每个发行目录内 **JAR**、**`application.properties`**、**`application-access-control.properties`**(与生产 access-control 对齐)、**`bootstrap.properties`**(Consul)与 **`redis-override.properties`** 位于**同一目录**。`run.sh` 使用:
|
||||
|
||||
```bash
|
||||
--spring.config.location=file:./application.properties,file:./application-access-control.properties,file:./redis-override.properties
|
||||
```
|
||||
|
||||
(说明见下文:Boot 1.5 下 jar 内 `classpath:/application.properties` 往往最后生效,仅靠外置文件盖不住密码;**profile=access-control** 的分表与门禁业务参数以外置 **`application-access-control.properties`** 为准,内容已与 **`星中心/cw-elevator-application-V1.0.0.20211103/application-access-control.properties`** 同步。)
|
||||
|
||||
## 目录
|
||||
|
||||
| 目录 | JAR | 端口(见配置首行) |
|
||||
|------|-----|-------------------|
|
||||
| `v1-legacy/` | `cw-elevator-application-V1.0.0.20211103.jar` | **18080** |
|
||||
| `v2-maven/` | `cw-elevator-application-V1.0.0.20211103.jar`(固定名,与 V1 一致) | **18081** |
|
||||
|
||||
**`application.properties`**:在验证环境常用的 JDBC / Redis / Ribbon / Kafka / 端口等覆盖(数据库为生产还原时,请把 **jdbc-url、账号** 指到承载还原库的实例)。
|
||||
|
||||
**`application-access-control.properties`**:生产门禁侧参数(含 **ShardingSphere 分表 `2020..2030`**、门禁阈值、定时任务开关等),与 **星中心** 部署目录保持一致;更新时请从星中心同名文件覆盖后再提交。
|
||||
|
||||
属性文件最初由历史包 `cw-elevator-application-V1.0.0.20211103/application.properties` 演化而来;头部保留 **`server.port`**(18080 / 18081)便于双实例并行(对拍 / API 套件)。
|
||||
|
||||
## 一次性同步 JAR
|
||||
|
||||
在 **`deploy/`** 下执行(需已存在 V1 原始 JAR;V2 优先用 **`releases/cw-elevator-application-V<版本>.<日期>/`** 中最新的同名 JAR,其次兼容旧路径 `releases/v<版本>/`,否则用 `cw-elevator-application-starter/target/`):
|
||||
|
||||
```bash
|
||||
./sync-jars.sh
|
||||
```
|
||||
|
||||
## 启动(两个终端)
|
||||
|
||||
```bash
|
||||
cd v1-legacy && ./run.sh
|
||||
```
|
||||
|
||||
```bash
|
||||
cd v2-maven && ./run.sh
|
||||
```
|
||||
|
||||
探活示例:`curl -s http://127.0.0.1:18080/actuator/health` 与 `18081`。
|
||||
|
||||
## Consul(`192.168.3.12` Docker)
|
||||
|
||||
本仓库在 **`v1-legacy/bootstrap.properties`**、**`v2-maven/bootstrap.properties`** 中写入,并与 **V1 运行包 `bootstrap.properties` 中 Consul 段**对齐:
|
||||
|
||||
- `spring.cloud.consul.host=192.168.3.12`
|
||||
- `spring.cloud.consul.port=8500`
|
||||
- `spring.cloud.consul.enabled=true`
|
||||
- `spring.cloud.consul.discovery.register=true`
|
||||
- **`spring.cloud.consul.discovery.enabled=false`**(与 V1 一致:不作为 Consul **客户端**做服务发现)
|
||||
- `spring.profiles.active=access-control`(与 V1 一致)
|
||||
|
||||
用于覆盖 fat-jar 内 **`10.128.161.95:8500`**,与 **`deploy/consul-docker`**(`hashicorp/consul:1.22`)对齐。在同一目录执行 `./run.sh` 时,Spring Cloud 会加载上述 **`bootstrap.properties`**。
|
||||
|
||||
验证 Consul:`curl -s http://192.168.3.12:8500/v1/status/leader`。浏览器打开 **`http://192.168.3.12:8500`** 可看 UI。
|
||||
|
||||
**Dubbo 属性说明**:`bootstrap.properties` 中的 `dubbo.*` 属性为历史遗留(V1 携带),当前运行时**未启用 Dubbo**(POM 中无 Dubbo 依赖),这些属性不生效。
|
||||
|
||||
### Feign 上游服务(Ribbon 静态列表)
|
||||
|
||||
在 **`spring.cloud.consul.discovery.enabled=false`**(与 V1 对齐)时,不从 Consul 拉取上游服务实例。Feign 通过 **Ribbon + ConfigurationBasedServerList** 从 **`application.properties`** 中 **`{服务名}.ribbon.listOfServers`** 读取静态 IP 列表,按环境配置:
|
||||
|
||||
```properties
|
||||
ninca-crk-std.ribbon.listOfServers=10.0.22.102:16106
|
||||
ninca-common-component-organization.ribbon.listOfServers=...
|
||||
ninca-common.ribbon.listOfServers=...
|
||||
```
|
||||
|
||||
(V2 v2.0.17 起不再需要 `NIWSServerListClassName` 或 `NincaCrkStdRibbonConfiguration`,Ribbon 默认 `ConfigurationBasedServerList`。)
|
||||
|
||||
## Redis 与 `SPRING_APPLICATION_JSON`
|
||||
|
||||
fat JAR 的 `classpath:/application.properties` 会带内网旧 **host** 与 **password**;在 Spring Boot 1.5 下,同目录的 `application.properties` / `redis-override.properties` 往往**压不过** jar 里同文件(见上节说明)。
|
||||
|
||||
**当前做法**:`deploy/merge-redis-json.sh` 读取各目录下的 **`redis-override.properties`**,生成一行 **`SPRING_APPLICATION_JSON`**(包含 `spring.redis.host` / `port` / `password`),由 `run.sh` **`export`** 后再启动 JVM,优先级高于打包配置。
|
||||
|
||||
- 默认已指向 **`redis-override.properties`** 中的地址与口令(若你的环境不一致,直接改该文件)。
|
||||
- **临时覆盖口令**:`SPRING_REDIS_PASSWORD='别的密码' ./run.sh`(若设为**空字符串**表示使用无密码 Redis)。
|
||||
- 需要 **python3**。
|
||||
- **勿把生产口令提交到公开仓库**;团队协作时口令宜走密钥管理,`redis-override.properties` 仅作本机示例。
|
||||
|
||||
## 修改配置
|
||||
|
||||
直接编辑对应目录下的 **`application.properties`**、**`application-access-control.properties`**(与 JAR 同路径),重启进程生效。
|
||||
若 **Consul KV** 中存在同名 `spring.shardingsphere.*` 等键,**运行时仍以 Consul 覆盖为准**,需与库表、本地文件三方对齐后再做生产模拟。
|
||||
|
||||
## 生产模拟时还可对齐的项(按需)
|
||||
|
||||
| 配置来源(星中心) | deploy 中对应位置 | 说明 |
|
||||
|-------------------|------------------|------|
|
||||
| `bootstrap.properties`(Consul / Dubbo) | `v1-legacy/bootstrap.properties` | 当前保留验证用 Consul 地址;生产 Consul host、Dubbo `zookeeper://...` 若需一致,在确认网络可达后按需合并(V2 构建一般不写 Dubbo)。 |
|
||||
| `application.properties`(jdbc/redis/kafka) | 同上目录 `application.properties` + `redis-override.properties` | 还原库在哪台 MySQL、Redis 是否同生产,由你在本机改 URL/口令;**勿将生产口令提交到公开仓库**。 |
|
||||
| `application-access-control.properties` | 已内置与星中心同内容 | 生产变更分表年限时,从星中心覆盖此文件。 |
|
||||
|
||||
## JDK 版本(避免 `InaccessibleObjectException` / CGLIB)
|
||||
|
||||
历史 JAR 面向 **JDK 8**。本仓库在 **`deploy/common-java.sh`** 顶部用变量 **`DEPLOY_JDK8`** 写死默认路径(当前为 **`/usr/lib/jvm/java-8-openjdk-amd64`**)。换机器请只改这一处,或通过环境变量临时覆盖:
|
||||
|
||||
`DEPLOY_JDK8=/你的/jdk8 ./run.sh`
|
||||
|
||||
**默认**:`run.sh` 使用 **`DEPLOY_JDK8`**,**不跟随** Conda 的 `JAVA_HOME`。
|
||||
|
||||
- 坚持用当前 Shell 里的 Java(如 Conda JDK17):
|
||||
`ELEVATOR_USE_ENV_JAVA=1 ./run.sh`
|
||||
非 JDK8 时会自动追加 `--add-opens=...`。
|
||||
- 额外 JVM:
|
||||
`ELEVATOR_JAVA_OPTS="-Xmx512m" ./run.sh`
|
||||
|
||||
## 发布包与「星中心」扁平目录对齐
|
||||
|
||||
执行 `./scripts/release-cw-elevator-application.sh <版本>` 生成的 **`releases/cw-elevator-application-V<版本>.<日期>/`**(日期默认当天 `YYYYMMDD`,可用 **`RELEASE_DATE_LABEL`** 覆盖)除 **`ddl/`** 外,**发布根目录**(与历史运行包 **`cw-elevator-application-V1.0.0.20211103`** 同层习惯)包含:
|
||||
|
||||
- **`bootstrap.properties`、`application.properties`、`application-access-control.properties`**(与 `deploy/v2-maven/` 同源;与 JAR、`start.sh` 同目录,**不再单独建 `config/`**)。
|
||||
- **`start.sh` / `stop.sh`**(对齐现场启停脚本)、**`cw-elevator-application.service`**(`WorkingDirectory`/`ExecStart` 中占位路径默认为 `/path/to/cw-elevator-application`,部署前请替换为实际目录)。
|
||||
- **`run.sh`**、**`common-java.sh`**(供 `run.sh` source)。
|
||||
- **`collect_elevator_runtime_evidence.sh`**:与仓库根 `scripts/` 同源,置于发布包根目录;现场只读采集进程参数、配置快照、日志关键行、Consul 健康与 KV,输出 `tar.gz`(用法见脚本头注释)。
|
||||
|
||||
默认还会生成同名 **`releases/cw-elevator-application-V<版本>.<日期>.zip**`;不需要 zip 时:`RELEASE_MAKE_ZIP=0 ./scripts/release-cw-elevator-application.sh <版本>`。
|
||||
|
||||
## Shell 脚本换行(若出现 `bash\r`)
|
||||
|
||||
在 Windows 或某些编辑器下保存成 **CRLF** 会导致 `#!/usr/bin/env bash\r`。仓库根已有 **`.editorconfig`** 约束 `*.sh` 使用 **LF**;若再出现可执行:
|
||||
|
||||
`find . -name '*.sh' -type f -exec sed -i 's/\r$//' {} +`(在 `反编译` 根目录)
|
||||
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck shell=bash
|
||||
# 由 v1-legacy/run.sh、v2-maven/run.sh source:JAVA_HOME;非 JDK8 时追加 --add-opens。
|
||||
#
|
||||
# === 本机 JDK 8 安装根目录(含 bin/java);换机器只需改下行默认路径或通过环境变量覆盖 ===
|
||||
: "${DEPLOY_JDK8:=/usr/lib/jvm/java-8-openjdk-amd64}"
|
||||
|
||||
_pick_java_home() {
|
||||
if [[ "${ELEVATOR_USE_ENV_JAVA:-0}" == "1" ]] && [[ -n "${JAVA_HOME:-}" && -x "${JAVA_HOME}/bin/java" ]]; then
|
||||
return 0
|
||||
fi
|
||||
if [[ -x "${DEPLOY_JDK8}/bin/java" ]]; then
|
||||
export JAVA_HOME="${DEPLOY_JDK8}"
|
||||
return 0
|
||||
fi
|
||||
for d in /usr/lib/jvm/java-8-openjdk-amd64 /usr/lib/jvm/java-1.8.0-openjdk; do
|
||||
if [[ -x "$d/bin/java" ]]; then
|
||||
export JAVA_HOME="$d"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
if [[ -n "${JAVA_HOME:-}" && -x "${JAVA_HOME}/bin/java" ]]; then
|
||||
return 0
|
||||
fi
|
||||
export JAVA_HOME="${JAVA_HOME:-${DEPLOY_JDK8}}"
|
||||
}
|
||||
|
||||
_jdk8_open_flags() {
|
||||
local java="$1"
|
||||
if "$java" -version 2>&1 | grep -qE 'version "1\.8\.'; then
|
||||
echo ""
|
||||
return
|
||||
fi
|
||||
echo "--add-opens=java.base/java.lang=ALL-UNNAMED"
|
||||
echo "--add-opens=java.base/java.lang.reflect=ALL-UNNAMED"
|
||||
echo "--add-opens=java.base/java.util=ALL-UNNAMED"
|
||||
echo "--add-opens=java.base/java.io=ALL-UNNAMED"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
# Consul 单机 Server(Docker),镜像 hashicorp/consul:1.22
|
||||
# 在存放本文件的目录执行: docker compose up -d
|
||||
# UI / HTTP API: http://<宿主机IP>:8500 (例: 192.168.3.12:8500)
|
||||
# 应用侧: spring.cloud.consul.host=<宿主机IP> spring.cloud.consul.port=8500
|
||||
services:
|
||||
consul:
|
||||
image: hashicorp/consul:1.22
|
||||
container_name: consul
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8500:8500" # HTTP API / UI
|
||||
- "8300:8300" # Server RPC
|
||||
- "8301:8301" # LAN Serf
|
||||
- "8302:8302/udp"
|
||||
- "8302:8302/tcp"
|
||||
- "8600:8600/tcp"
|
||||
- "8600:8600/udp" # DNS
|
||||
command: >
|
||||
agent -server -bootstrap-expect=1 -ui
|
||||
-client=0.0.0.0
|
||||
-bind=0.0.0.0
|
||||
-data-dir=/consul/data
|
||||
volumes:
|
||||
- consul-data:/consul/data
|
||||
# 若夸主机访问 RPC 异常,可在宿主机上改为显式 advertise(示例,按实际 IP 修改):
|
||||
# command: >
|
||||
# agent -server -bootstrap-expect=1 -ui -client=0.0.0.0 -bind=0.0.0.0
|
||||
# -advertise=192.168.3.12 -data-dir=/consul/data
|
||||
|
||||
volumes:
|
||||
consul-data:
|
||||
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
# 读取 redis-override.properties,输出一行 SPRING_APPLICATION_JSON(紧凑 JSON)。
|
||||
# 若环境变量 SPRING_REDIS_PASSWORD 已设置(含空字符串),则覆盖文件中的 spring.redis.password。
|
||||
# 用法: export SPRING_APPLICATION_JSON="$(./merge-redis-json.sh /path/to/redis-override.properties)"
|
||||
set -euo pipefail
|
||||
PROP="${1:?用法: merge-redis-json.sh <redis-override.properties>}"
|
||||
if [[ ! -f "$PROP" ]]; then
|
||||
echo "找不到文件: $PROP" >&2
|
||||
exit 1
|
||||
fi
|
||||
python3 - "$PROP" <<'PY'
|
||||
import json, os, pathlib, re, sys
|
||||
|
||||
prop = pathlib.Path(sys.argv[1])
|
||||
lines = prop.read_text(encoding="utf-8")
|
||||
|
||||
|
||||
def get(key):
|
||||
pat = r"^" + re.escape(key) + r"\s*=\s*(.*?)\s*$"
|
||||
m = re.search(pat, lines, re.MULTILINE)
|
||||
return m.group(1).strip() if m else ""
|
||||
|
||||
|
||||
host = get("spring.redis.host") or "127.0.0.1"
|
||||
port_raw = get("spring.redis.port") or "6379"
|
||||
try:
|
||||
port = int(port_raw)
|
||||
except ValueError:
|
||||
port = 6379
|
||||
|
||||
if "SPRING_REDIS_PASSWORD" in os.environ:
|
||||
pwd = os.environ["SPRING_REDIS_PASSWORD"]
|
||||
else:
|
||||
pwd = get("spring.redis.password")
|
||||
|
||||
payload = {"spring": {"redis": {"host": host, "port": port, "password": pwd}}}
|
||||
print(json.dumps(payload, separators=(",", ":")))
|
||||
PY
|
||||
@@ -0,0 +1,3 @@
|
||||
# 供 run_v1v2_parity_automated.sh 置于 spring.config.location 链末尾加载。
|
||||
# 本机对拍若无 Consul(8500),若不关闭会因 agentServiceRegister 失败导致整进程退出。
|
||||
spring.cloud.consul.enabled=false
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
[Unit]
|
||||
Description=cw-elevator-application __REL_VER__ (Maven V2 fat jar)
|
||||
After=network.target remote-fs.target nss-lookup.target
|
||||
|
||||
[Service]
|
||||
# 将 WorkingDirectory、ExecStart、ExecStop 中的路径占位改为实际部署绝对路径(与 JAR、start.sh、properties 同目录)。
|
||||
PIDFile=/run/cw-elevator-application-__REL_VER__.pid
|
||||
ExecStartPre=/bin/rm -f /run/cw-elevator-application-__REL_VER__.pid
|
||||
ExecStart=/bin/bash __DEPLOY_DIR__/start.sh
|
||||
ExecStop=/bin/bash __DEPLOY_DIR__/stop.sh
|
||||
ExecReload=/bin/kill -s HUP $MAINPID
|
||||
KillSignal=SIGQUIT
|
||||
TimeoutStopSec=5
|
||||
KillMode=process
|
||||
PrivateTmp=true
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
StandardOutput=null
|
||||
StandardError=null
|
||||
WorkingDirectory=__DEPLOY_DIR__
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
# 与「星中心」V1 部署习惯对齐:本脚本与 __JAR_NAME__、bootstrap/application*.properties 位于同一目录。
|
||||
# 覆盖 JVM:设置环境变量 ELEVATOR_JAVA_OPTS(可选);指定 Java:JAVA_HOME 或 JAVA_CMD。
|
||||
set -euo pipefail
|
||||
dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||||
cd "$dir"
|
||||
JAR="__JAR_NAME__"
|
||||
if [[ ! -f "$JAR" ]]; then
|
||||
echo "ERROR: 未找到 ${JAR}(当前目录 $(pwd))" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ -n "${JAVA_CMD:-}" ]]; then
|
||||
JAVA_EXEC="$JAVA_CMD"
|
||||
elif [[ -n "${JAVA_HOME:-}" && -x "${JAVA_HOME}/bin/java" ]]; then
|
||||
JAVA_EXEC="${JAVA_HOME}/bin/java"
|
||||
else
|
||||
JAVA_EXEC="/usr/lib/jvm/java-8-openjdk-amd64/bin/java"
|
||||
fi
|
||||
if [[ -z "${ELEVATOR_JAVA_OPTS:-}" ]]; then
|
||||
ELEVATOR_JAVA_OPTS="-Xmx3072m -Xms3072m -Xmn1024m"
|
||||
fi
|
||||
# shellcheck disable=SC2086
|
||||
exec "$JAVA_EXEC" $ELEVATOR_JAVA_OPTS -jar "$JAR"
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
# 停止与本目录 __JAR_NAME__ 对应的 Java 进程(仅匹配命令行中含该 JAR 名的进程)。
|
||||
set -euo pipefail
|
||||
JAR="__JAR_NAME__"
|
||||
# shellcheck disable=SC2009
|
||||
pid=$(ps -ef | grep '[j]ava' | grep "$JAR" | awk '{print $2}' || true)
|
||||
if [[ -n "${pid}" ]]; then
|
||||
kill -9 $pid
|
||||
fi
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env bash
|
||||
# 将 V1 / V2 JAR 复制到与各目录 application.properties 同路径,便于 java -jar 启动。
|
||||
#
|
||||
# 可选:PARITY_PATCH_V1_DATA=1 时,在复制 V1 fat-jar 后,用当前 Maven 构建的
|
||||
# cw-elevator-application-data 模块 JAR **覆盖** fat-jar 内 lib/cw-elevator-application-data-1.0-SNAPSHOT.jar
|
||||
#(文件名不变,仅替换字节码)。用于 V1/V2 对拍:消除历史运行包内嵌 data 层与源码分支分叉导致的
|
||||
# ShardingSphere「no table route」等非业务差异。手工比对「纯正历史 V1」时请 unset 或设为 0。
|
||||
set -euo pipefail
|
||||
|
||||
DEPLOY="$(cd "$(dirname "$0")" && pwd)"
|
||||
MAVEN="$(cd "$DEPLOY/.." && pwd)"
|
||||
REPO="$(cd "$MAVEN/.." && pwd)"
|
||||
|
||||
V1_SRC="${REPO}/cw-elevator-application-V1.0.0.20211103/cw-elevator-application-V1.0.0.20211103.jar"
|
||||
V2_VER="${V2_VER:-2.0.7}"
|
||||
V2_JAR_NAME="cw-elevator-application-${V2_VER}.jar"
|
||||
V2_TGT="${MAVEN}/cw-elevator-application-starter/target/${V2_JAR_NAME}"
|
||||
# 发布目录命名:cw-elevator-application-V<版本>.<YYYYMMDD>/(与 V1 运行包风格一致)
|
||||
V2_BUNDLE="$(ls -1dt "${MAVEN}/releases"/cw-elevator-application-V"${V2_VER}".* 2>/dev/null | head -1 || true)"
|
||||
V2_REL=""
|
||||
if [[ -n "${V2_BUNDLE}" ]]; then
|
||||
V2_REL="${V2_BUNDLE}/${V2_JAR_NAME}"
|
||||
fi
|
||||
if [[ -z "${V2_REL}" || ! -f "${V2_REL}" ]]; then
|
||||
V2_LEGACY="${MAVEN}/releases/v${V2_VER}/${V2_JAR_NAME}"
|
||||
if [[ -f "${V2_LEGACY}" ]]; then
|
||||
V2_REL="${V2_LEGACY}"
|
||||
fi
|
||||
fi
|
||||
PATCH_V1_DATA="${PARITY_PATCH_V1_DATA:-0}"
|
||||
DATA_NEW="${MAVEN}/cw-elevator-application-data/target/cw-elevator-application-data-2.0-SNAPSHOT.jar"
|
||||
|
||||
if [[ ! -f "$V1_SRC" ]]; then
|
||||
echo "ERROR: 未找到 V1 JAR: $V1_SRC" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 优先 target:本地 mvn package 后应与 deploy 同步,避免 releases 里旧包盖住新构建。
|
||||
V2_SRC=""
|
||||
if [[ -f "$V2_TGT" ]]; then
|
||||
V2_SRC="$V2_TGT"
|
||||
elif [[ -f "$V2_REL" ]]; then
|
||||
V2_SRC="$V2_REL"
|
||||
else
|
||||
echo "ERROR: 未找到 V2 JAR(请先 mvn package,或运行 scripts/release-cw-elevator-application.sh ${V2_VER}):" >&2
|
||||
echo " ${V2_TGT}" >&2
|
||||
echo " 或 releases/cw-elevator-application-V${V2_VER}.<日期>/${V2_JAR_NAME}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
install -m0644 "$V1_SRC" "${DEPLOY}/v1-legacy/cw-elevator-application-V1.0.0.20211103.jar"
|
||||
install -m0644 "$V2_SRC" "${DEPLOY}/v2-maven/${V2_JAR_NAME}"
|
||||
|
||||
V1_OUT="${DEPLOY}/v1-legacy/cw-elevator-application-V1.0.0.20211103.jar"
|
||||
if [[ "$PATCH_V1_DATA" == "1" ]]; then
|
||||
if [[ ! -f "$DATA_NEW" ]]; then
|
||||
echo "WARN: PARITY_PATCH_V1_DATA=1 但未找到 Maven data 模块产物,跳过覆盖: $DATA_NEW" >&2
|
||||
else
|
||||
# Spring Boot 可执行 fat-jar 要求 lib/*.jar 以 ZIP STORED(无压缩)存放;jar uf 会压缩嵌套 JAR,
|
||||
# 导致 JarLauncher 报错「nested jar files must be stored without compression」。
|
||||
TMPDIR="$(mktemp -d)"
|
||||
mkdir -p "${TMPDIR}/lib"
|
||||
cp -f "$DATA_NEW" "${TMPDIR}/lib/cw-elevator-application-data-1.0-SNAPSHOT.jar"
|
||||
zip -d "$V1_OUT" "lib/cw-elevator-application-data-1.0-SNAPSHOT.jar" 2>/dev/null || true
|
||||
(cd "$TMPDIR" && zip -q -0 "$V1_OUT" lib/cw-elevator-application-data-1.0-SNAPSHOT.jar)
|
||||
rm -rf "$TMPDIR"
|
||||
echo "OK: 已用当前构建 data 模块覆盖 V1 fat-jar 内 lib/cw-elevator-application-data-1.0-SNAPSHOT.jar(STORE,对拍专用)"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "OK: V1 -> deploy/v1-legacy/"
|
||||
echo "OK: V2 -> deploy/v2-maven/"
|
||||
ls -la "${DEPLOY}/v1-legacy/"*.jar "${DEPLOY}/v2-maven/"*.jar
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
# 来源:星河湾星中星/星中心/cw-elevator-application-V1.0.0.20211103/application-access-control.properties(生产门禁 access-control 参数)
|
||||
# profile=access-control 时与本目录 application.properties 合并加载;勿随意删减与分表相关项。
|
||||
# \u56FE\u7247\u524D\u7F00
|
||||
cloudwalk.elevator.common.relativePrefix=/cwos-portal/portal/fileManager/imgByPath?path=
|
||||
# \u6570\u636E\u5E93sharding\u914D\u7F6E
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.actual-data-nodes=ds0.IT_ACS_RECOG_RECORD_$->{2020..2030}
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.sharding-column=RECOGNITION_TIME
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.precise-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.range-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
# \u7535\u68AF\u5F00\u95E8\u4E8B\u4EF6\u8868
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.actual-data-nodes=ds0.IT_ACS_ELEVATOR_RECORD_$->{2020..2030}
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.sharding-column=RECOGNITION_TIME
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.precise-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.range-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
spring.shardingsphere.sharding.binding-tables=IT_ACS_ELEVATOR_RECORD,IT_ACS_RECOG_RECORD
|
||||
# \u4EBA\u8138\u6293\u62CD\u8BC6\u522B\u9608\u503C
|
||||
cloudwalk.access-control.common.device-atrr-map.ACS_FACE_REG_THRESHOLD=75
|
||||
# \u4EBA\u8138\u6BD4\u5BF9\u67E5\u8BE2\u8FC7\u6EE4\u9608\u503C
|
||||
cloudwalk.access-control.common.face-compare-THRESHOLD=80
|
||||
# \u5B9A\u65F6\u4EFB\u52A1\u914D\u7F6E
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.name=AcsRecordStatisticsByDayJob
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.group=ACCESS-CONTROL_GROUP
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.executable-class=cn.cloudwalk.service.ninca.accesscontrol.common.job.executable.AcsRecordStatisticsByDayJob
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.description=AcsRecordStatisticsByDay job is starting.........
|
||||
## \u6BCF\u5929\u51CC\u66680\u70B910\u5206\u6267\u884C
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.cron-expression=0 10 0 * * ?
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.priority=1
|
||||
# \u5F00\u95E8\u8BB0\u5F55\u63A8\u9001\u5F00\u5173\uFF1Atrue-\u5F00\uFF1Bfalse-\u5173\u3002\u9ED8\u8BA4\u4E3A\u5173
|
||||
cloudwalk.access-control.common.publish-opendoor-switch=false
|
||||
# \u5F00\u95E8\u8BB0\u5F55\u63A8\u9001serviceCode
|
||||
cloudwalk.access-control.common.publish-opendoor-service-code=access-control
|
||||
# \u540E\u7AEF\u8BC6\u522B\u4E0B\u53D1\u5F00\u95E8\u6307\u4EE4\u76F8\u5173\u914D\u7F6E
|
||||
# \u6293\u62CD\u65F6\u95F4\u5728\u591A\u4E45\u4E4B\u524D\u4E0D\u4E0B\u53D1\u5F00\u95E8\u6307\u4EE4\u3002\u9ED8\u8BA45\u5206\u949F\u3002\u5355\u4F4D\uFF1A\u6BEB\u79D2\u3002
|
||||
cloudwalk.access-control.common.face-capture-time-expired-milliseconds=300000
|
||||
# \u591A\u5C11\u6BEB\u79D2\u4EE5\u5185\u7684\u591A\u6761\u6293\u62CD\u8BB0\u5F55\u53EA\u4E0B\u53D1\u4E00\u6B21\u5F00\u95E8\u6307\u4EE4\u3002\u9ED8\u8BA43\u79D2\u3002\u5355\u4F4D\uFF1A\u6BEB\u79D2
|
||||
cloudwalk.access-control.common.face-capture-interval-milliseconds=3000
|
||||
# \u5F00\u95E8\u8BB0\u5F55\u8FC7\u671F\u65F6\u95F4\u3002\u591A\u5C11\u6BEB\u79D2\u4E4B\u540E\uFF0C\u672A\u4E0A\u62A5\u5F00\u95E8\u8BB0\u5F55\uFF0C\u5F00\u95E8\u8BB0\u5F55\u72B6\u6001\u66F4\u65B0\u4E3A\u5931\u8D25\u3002\u9ED8\u8BA410\u5206\u949F\u3002\u5355\u4F4D\uFF1A\u6BEB\u79D2
|
||||
cloudwalk.access-control.common.face-capture-open-door-fail-milliseconds=600000
|
||||
# \u95E8\u7981\u63A7\u5236\u5668\u7C7B\u578B\u96C6\u5408
|
||||
cloudwalk.access-control.common.device-controller-array[0]=mqtt
|
||||
# \u8BBE\u5907\u79CD\u7C7Bid\u96C6\u5408
|
||||
cloudwalk.access-control.common.device-category-array[0]=4
|
||||
cloudwalk.access-control.common.device-category-array[1]=5
|
||||
cloudwalk.access-control.common.device-category-array[2]=7
|
||||
cloudwalk.access-control.common.device-category-array[3]=2
|
||||
cloudwalk.access-control.common.device-category-array[4]=8
|
||||
cloudwalk.access-control.common.device-category-array[5]=11
|
||||
@@ -0,0 +1,122 @@
|
||||
# deploy/v1-legacy \uFF1A\u5386\u53F2\u5305 cw-elevator-application-V1.0.0.20211103.jar\uFF08\u540C\u76EE\u5F55\u542F\u52A8\uFF09
|
||||
# \u751F\u4EA7\u6A21\u62DF\uFF1Aaccess-control \u4E1A\u52A1/\u5206\u8868/\u95E8\u7981\u9608\u503C\u7B49\u89C1\u540C\u76EE\u5F55 application-access-control.properties
|
||||
# \uFF08\u4E0E \u661F\u4E2D\u5FC3/cw-elevator-application-V1.0.0.20211103 \u5BF9\u9F50\uFF09\u3002\u672C\u6587\u4EF6\u4FDD\u7559\u7AEF\u53E3\u3001JDBC/Redis/Ribbon/Kafka \u7B49\u9A8C\u8BC1\u73AF\u5883\u8986\u76D6\u3002
|
||||
server.port=18080
|
||||
server.tomcat.uri-encoding=UTF-8
|
||||
spring.application.name=elevator-app
|
||||
# OpenFeign 2.1.x\uFF1A\u591A\u4E2A @FeignClient \u5171\u540C name \u5360\u4F4D\u7B26\u65F6\u91CD\u590D\u6CE8\u518C FeignClientSpecification\uFF0C\u4E0E Spring \u9519\u8BEF\u63D0\u793A\u4E00\u81F4
|
||||
spring.main.allow-bean-definition-overriding=true
|
||||
|
||||
# spring\u914D\u7F6E
|
||||
spring.mvc.throw-exception-if-no-handler-found=true
|
||||
spring.mvc.locale=zh_CN
|
||||
# \u8D44\u6E90\u6587\u4EF6\u914D\u7F6E
|
||||
spring.messages.basename=access-control
|
||||
spring.messages.always-use-message-format=true
|
||||
spring.messages.encoding=utf-8
|
||||
# http\u914D\u7F6E
|
||||
spring.http.multipart.max-file-size=200MB
|
||||
spring.http.multipart.max-request-size=200MB
|
||||
spring.http.encoding.force=true
|
||||
spring.http.encoding.charset=UTF-8
|
||||
spring.http.encoding.enabled=true
|
||||
# \u65E5\u5FD7\u914D\u7F6E
|
||||
logging.config=classpath:logs/logback.xml
|
||||
logging.file=${spring.application.name}
|
||||
logging.path=logs
|
||||
logging.level.root=info
|
||||
logging.level.cn.cloudwalk=info
|
||||
# mybatis\u914D\u7F6E
|
||||
mybatis.mapper-locations=classpath*:cn/cloudwalk/elevator/**/*.xml
|
||||
mybatis.config-location=classpath:mapper/mybatis-config.xml
|
||||
# \u5E8F\u5217\u53F7\u914D\u7F6E
|
||||
cloudwalk.serial.enabled=true
|
||||
cloudwalk.serial.serial-length=8
|
||||
cloudwalk.serial.serial-type=redis
|
||||
cloudwalk.serial.serial-redis-key=CLOUDWALK-ACS-SERIAL-KEY
|
||||
# \u7F13\u5B58\u914D\u7F6E
|
||||
cloudwalk.spring.cache.expires=CACHE_NAME_APPLICATIONIDS#21600,ACS_DeviceTypesCache#7200,ACS_DeviceTypeFeaturesCache#7200,ACS_DeviceAttrsCache#7200,ACS_RecordStatisticsCache#90000,ACS_AreaTreeCache#60
|
||||
# \u5185\u90E8\u63A5\u53E3\u8C03\u7528\u5BA2\u6237\u7AEF\u53CA\u8D85\u65F6\u914D\u7F6E
|
||||
feign.hystrix.enable=true
|
||||
feign.httpclient.enable=false
|
||||
feign.okhttp.enable=true
|
||||
ribbon.http.client.enabled=false
|
||||
ribbon.okhttp.enabled=true
|
||||
ribbon.ReadTimeout=10000
|
||||
ribbon.ConnectTimeout=10000
|
||||
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
|
||||
# \u5065\u5EB7\u68C0\u67E5\u914D\u7F6E
|
||||
management.health.redis.enabled=false
|
||||
management.health.db.enabled=false
|
||||
# \u6570\u636E\u8131\u654F\u914D\u7F6E
|
||||
cloudwalk.datafield.enable=true
|
||||
cloudwalk.datafield.securityKey=d4b2aabc97394a12a27fc3cca6cd9ba1
|
||||
cloudwalk.datafield.encrypt=AES
|
||||
# redis\u914D\u7F6E\uFF08\u672C\u673A Docker\uFF1Aybs-redis 6379->6379\uFF0C\u82E5\u7528 craftlabs-redis \u6539\u4E3A 6380\uFF09
|
||||
spring.redis.host=127.0.0.1
|
||||
spring.redis.port=6379
|
||||
# \u672C\u673A Redis \u65E0\u5BC6\u7801\u65F6\u5FC5\u987B\u4FDD\u7559\u4E0B\u884C\u7A7A\u503C\uFF0C\u4EE5\u8986\u76D6 fat-jar \u5185\u5D4C\u65E7\u5BC6\u7801\uFF08\u5426\u5219 Redisson ERR AUTH\uFF09
|
||||
spring.redis.password=
|
||||
spring.redis.database=5
|
||||
spring.redis.timeout=0
|
||||
spring.redis.pool.max-active=10
|
||||
spring.redis.pool.max-idle=1
|
||||
spring.redis.pool.max-wait=10
|
||||
spring.redis.pool.min-idle=0
|
||||
# \u6570\u636E\u5E93sharding\u914D\u7F6E
|
||||
spring.shardingsphere.datasource.names=ds0
|
||||
spring.shardingsphere.datasource.ds0.type=com.zaxxer.hikari.HikariDataSource
|
||||
spring.shardingsphere.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver
|
||||
spring.shardingsphere.datasource.ds0.jdbc-url=jdbc:mysql://192.168.3.12:3307/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true
|
||||
spring.shardingsphere.datasource.ds0.username=root
|
||||
spring.shardingsphere.datasource.ds0.password=123456
|
||||
spring.shardingsphere.datasource.ds0.connection-timeout=60000
|
||||
spring.shardingsphere.datasource.ds0.maximum-pool-size=20
|
||||
spring.shardingsphere.datasource.ds0.minimum-idle=5
|
||||
spring.shardingsphere.datasource.ds0.max-lifetime=1765000
|
||||
spring.shardingsphere.datasource.ds0.auto-commit=true
|
||||
spring.shardingsphere.datasource.ds0.pool-name=ds0-pool
|
||||
spring.shardingsphere.props.sql.show=false
|
||||
spring.shardingsphere.sharding.default-data-source-name=ds0
|
||||
# \u5FAE\u670D\u52A1\u670D\u52A1\u540D\u914D\u7F6E
|
||||
feign.device.name=cwos-portal
|
||||
feign.resource.name=cwos-portal
|
||||
feign.cwos-portal.name=cwos-portal
|
||||
feign.ninca-crk-std.name=ninca-crk-std
|
||||
# bootstrap \u5DF2\u4E0E V1 fat-jar \u5185\u7F6E\uFF1AConsul \u53D1\u73B0\u5173\u95ED\u3002\u9759\u6001 Ribbon \u4E0E ninca-crk-std.ip \u6309\u73AF\u5883\u4E00\u81F4\u4FEE\u6539\u3002
|
||||
ninca-crk-std.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
|
||||
ninca-crk-std.ribbon.listOfServers=10.128.161.95:16106
|
||||
feign.davinci-portal.name=cwos-portal
|
||||
feign.component-organization.name=ninca-common-component-organization
|
||||
feign.ninca-common.name=ninca-common
|
||||
feign.mqtt.name=cloudwalk-device-thirdparty
|
||||
# CWOS\u4E8B\u4EF6\u914D\u7F6E
|
||||
cloudwalk.event.bootstrap-servers=192.168.3.12:9092
|
||||
cloudwalk.event.group-id=cw-elevator-application-1
|
||||
cloudwalk.event.handler-executor-config.core-pool-size=10
|
||||
cloudwalk.event.handler-executor-config.maximum-pool-size=30
|
||||
# \u5206\u5E03\u5F0F\u9501\u914D\u7F6E
|
||||
intelligent.lock.enable=true
|
||||
intelligent.lock.config.default-wait-time=10000
|
||||
lockWatchdogTimeout=21000
|
||||
# PERSON_NAME_SPACE
|
||||
person.name.space=recordEvent
|
||||
elevator.application.key=xinghewan
|
||||
elevator.application.time=600
|
||||
elevator.application.keyA=5B7DEF88FF04
|
||||
ninca-crk-std.ip=10.128.161.95:16106
|
||||
#\u53D1\u9001\u7B2C\u4E09\u65B9\u6570\u636Eip
|
||||
sendRecord.ip=hrec.star-river.com:32165
|
||||
sendRecord.token.corpId=53db867a8bb747a1bd04dd1afcad8ca6
|
||||
sendRecord.token.appKey=293e2d708f0143c2957b702cef44d951
|
||||
sendRecord.token.appSecret=5f6995009b864669b52041b8f5dc4625
|
||||
sendRecord.boolean=true
|
||||
|
||||
# \u8BBE\u5907\u5904\u7406\u7EBF\u7A0B\u6C60\u914D\u7F6E
|
||||
ninca.update.floor.pool.corePoolSize=5
|
||||
ninca.update.floor.pool.maxPoolSize=5
|
||||
ninca.update.floor.pool.queueCapacity=100000
|
||||
ninca.update.floor.pool.keepAliveSeconds=150
|
||||
ninca.update.floor.pool.allowCoreThreadTimeOut=true
|
||||
#\u697C\u680Bid
|
||||
floor.building.id=605560539791228928
|
||||
@@ -0,0 +1,13 @@
|
||||
# 与 JAR 同目录,覆盖 jar 内 bootstrap;Consul 段与 V1 运行包对齐。
|
||||
# Dubbo/ZooKeeper 仅 V1 fat-jar 内嵌使用;若启动报 ZK 相关错误再于外置 application 中处理。
|
||||
spring.cloud.consul.host=192.168.3.12
|
||||
spring.cloud.consul.port=8500
|
||||
spring.cloud.consul.enabled=true
|
||||
spring.cloud.consul.discovery.register=true
|
||||
spring.cloud.consul.discovery.enabled=false
|
||||
spring.cloud.consul.discovery.prefer-ip-address=true
|
||||
spring.cloud.consul.discovery.instance-id=${spring.application.name}-${spring.cloud.client.ipAddress}:${server.port}
|
||||
spring.cloud.consul.discovery.ip-address=${spring.cloud.client.ipAddress}
|
||||
spring.cloud.consul.discovery.deregister=false
|
||||
|
||||
spring.profiles.active=access-control
|
||||
@@ -0,0 +1,5 @@
|
||||
# 必须在 spring.config.location 中排在 application.properties 之后加载。
|
||||
# run.sh 用 merge-redis-json.sh 将本文件转为 SPRING_APPLICATION_JSON,以压过 fat-jar 内 classpath 里的 Redis 配置。
|
||||
spring.redis.host=192.168.3.12
|
||||
spring.redis.port=6379
|
||||
spring.redis.password=1qaz!QAZ
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env bash
|
||||
# 与当前目录下 application.properties 同路径启动 V1 历史包。
|
||||
# 默认优先使用系统 JDK 8(避免 Conda 的 JDK17+ 触发 CGLIB 模块错误)。
|
||||
# 若必须用当前环境的 JAVA_HOME: ELEVATOR_USE_ENV_JAVA=1 ./run.sh
|
||||
# 额外 JVM 参数: ELEVATOR_JAVA_OPTS="-Xmx512m" ./run.sh
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")"
|
||||
# shellcheck source=../common-java.sh
|
||||
source "$(cd "$(dirname "$0")" && pwd)/../common-java.sh"
|
||||
|
||||
JAR="cw-elevator-application-V1.0.0.20211103.jar"
|
||||
if [[ ! -f "$JAR" ]]; then
|
||||
echo "缺少 $JAR,请在 deploy 目录执行: ./sync-jars.sh" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
_pick_java_home
|
||||
if [[ ! -x "${JAVA_HOME}/bin/java" ]]; then
|
||||
echo "ERROR: 未找到可执行的 JDK。请安装 openjdk-8-jdk,或设定 JAVA_HOME / ELEVATOR_USE_ENV_JAVA=1 ./run.sh(使用 Conda 等当前环境)。" >&2
|
||||
exit 1
|
||||
fi
|
||||
JAVA="${JAVA_HOME}/bin/java"
|
||||
OPEN_FLAGS=()
|
||||
while IFS= read -r line; do
|
||||
[[ -n "$line" ]] && OPEN_FLAGS+=("$line")
|
||||
done < <(_jdk8_open_flags "$JAVA")
|
||||
|
||||
# classpath:/application.properties 最后加载会盖住外置 properties;用 merge-redis-json.sh 把 redis-override.properties
|
||||
# 转成 SPRING_APPLICATION_JSON(含 host/port/password),优先级高于 jar。
|
||||
# application-access-control.properties 与星中心生产门禁配置对齐,在 application 之后、redis-override 之前加载。
|
||||
# 临时改密码:SPRING_REDIS_PASSWORD='其它' ./run.sh(含空字符串表示无密码)
|
||||
if ! command -v python3 >/dev/null 2>&1; then
|
||||
echo "需要 python3(deploy/merge-redis-json.sh)。请安装 python3。" >&2
|
||||
exit 1
|
||||
fi
|
||||
MERGE="$(cd "$(dirname "$0")" && pwd)/../merge-redis-json.sh"
|
||||
if [[ ! -x "$MERGE" ]]; then
|
||||
chmod +x "$MERGE" 2>/dev/null || true
|
||||
fi
|
||||
export SPRING_APPLICATION_JSON="$("$MERGE" "$PWD/redis-override.properties")"
|
||||
# shellcheck disable=SC2086
|
||||
exec "$JAVA" "${OPEN_FLAGS[@]}" ${ELEVATOR_JAVA_OPTS:-} -jar "$JAR" \
|
||||
--spring.config.location=file:./application.properties,file:./application-access-control.properties,file:./redis-override.properties
|
||||
@@ -0,0 +1,45 @@
|
||||
# \u56FE\u7247\u524D\u7F00
|
||||
cloudwalk.elevator.common.relativePrefix=/cwos-portal/portal/fileManager/imgByPath?path=
|
||||
# \u6570\u636E\u5E93sharding\u914D\u7F6E
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.actual-data-nodes=ds0.IT_ACS_RECOG_RECORD_$->{2020..2030}
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.sharding-column=RECOGNITION_TIME
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.precise-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.range-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
# \u7535\u68AF\u5F00\u95E8\u4E8B\u4EF6\u8868
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.actual-data-nodes=ds0.IT_ACS_ELEVATOR_RECORD_$->{2020..2030}
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.sharding-column=RECOGNITION_TIME
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.precise-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.range-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
spring.shardingsphere.sharding.binding-tables=IT_ACS_ELEVATOR_RECORD,IT_ACS_RECOG_RECORD
|
||||
# \u4EBA\u8138\u6293\u62CD\u8BC6\u522B\u9608\u503C
|
||||
cloudwalk.access-control.common.device-atrr-map.ACS_FACE_REG_THRESHOLD=75
|
||||
# \u4EBA\u8138\u6BD4\u5BF9\u67E5\u8BE2\u8FC7\u6EE4\u9608\u503C
|
||||
cloudwalk.access-control.common.face-compare-THRESHOLD=80
|
||||
# \u5B9A\u65F6\u4EFB\u52A1\u914D\u7F6E
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.name=AcsRecordStatisticsByDayJob
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.group=ACCESS-CONTROL_GROUP
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.executable-class=cn.cloudwalk.service.ninca.accesscontrol.common.job.executable.AcsRecordStatisticsByDayJob
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.description=AcsRecordStatisticsByDay job is starting.........
|
||||
## \u6BCF\u5929\u51CC\u66680\u70B910\u5206\u6267\u884C
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.cron-expression=0 10 0 * * ?
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.priority=1
|
||||
# \u5F00\u95E8\u8BB0\u5F55\u63A8\u9001\u5F00\u5173\uFF1Atrue-\u5F00\uFF1Bfalse-\u5173\u3002\u9ED8\u8BA4\u4E3A\u5173
|
||||
cloudwalk.access-control.common.publish-opendoor-switch=false
|
||||
# \u5F00\u95E8\u8BB0\u5F55\u63A8\u9001serviceCode
|
||||
cloudwalk.access-control.common.publish-opendoor-service-code=access-control
|
||||
# \u540E\u7AEF\u8BC6\u522B\u4E0B\u53D1\u5F00\u95E8\u6307\u4EE4\u76F8\u5173\u914D\u7F6E
|
||||
# \u6293\u62CD\u65F6\u95F4\u5728\u591A\u4E45\u4E4B\u524D\u4E0D\u4E0B\u53D1\u5F00\u95E8\u6307\u4EE4\u3002\u9ED8\u8BA45\u5206\u949F\u3002\u5355\u4F4D\uFF1A\u6BEB\u79D2\u3002
|
||||
cloudwalk.access-control.common.face-capture-time-expired-milliseconds=300000
|
||||
# \u591A\u5C11\u6BEB\u79D2\u4EE5\u5185\u7684\u591A\u6761\u6293\u62CD\u8BB0\u5F55\u53EA\u4E0B\u53D1\u4E00\u6B21\u5F00\u95E8\u6307\u4EE4\u3002\u9ED8\u8BA43\u79D2\u3002\u5355\u4F4D\uFF1A\u6BEB\u79D2
|
||||
cloudwalk.access-control.common.face-capture-interval-milliseconds=3000
|
||||
# \u5F00\u95E8\u8BB0\u5F55\u8FC7\u671F\u65F6\u95F4\u3002\u591A\u5C11\u6BEB\u79D2\u4E4B\u540E\uFF0C\u672A\u4E0A\u62A5\u5F00\u95E8\u8BB0\u5F55\uFF0C\u5F00\u95E8\u8BB0\u5F55\u72B6\u6001\u66F4\u65B0\u4E3A\u5931\u8D25\u3002\u9ED8\u8BA410\u5206\u949F\u3002\u5355\u4F4D\uFF1A\u6BEB\u79D2
|
||||
cloudwalk.access-control.common.face-capture-open-door-fail-milliseconds=600000
|
||||
# \u95E8\u7981\u63A7\u5236\u5668\u7C7B\u578B\u96C6\u5408
|
||||
cloudwalk.access-control.common.device-controller-array[0]=mqtt
|
||||
# \u8BBE\u5907\u79CD\u7C7Bid\u96C6\u5408
|
||||
cloudwalk.access-control.common.device-category-array[0]=4
|
||||
cloudwalk.access-control.common.device-category-array[1]=5
|
||||
cloudwalk.access-control.common.device-category-array[2]=7
|
||||
cloudwalk.access-control.common.device-category-array[3]=2
|
||||
cloudwalk.access-control.common.device-category-array[4]=8
|
||||
cloudwalk.access-control.common.device-category-array[5]=11
|
||||
@@ -0,0 +1,48 @@
|
||||
# V2 elevator test config — auto-generated from template
|
||||
# Variables: 192.168.3.12 3307 127.0.0.1 1qaz!QAZ
|
||||
# 127.0.0.1 9517 127.0.0.1 9092
|
||||
# 127.0.0.1 16106
|
||||
server.port=18081
|
||||
spring.application.name=elevator-app
|
||||
spring.profiles.active=access-control
|
||||
|
||||
# Consul
|
||||
spring.cloud.consul.host=127.0.0.1
|
||||
spring.cloud.consul.port=9517
|
||||
spring.cloud.consul.enabled=true
|
||||
spring.cloud.consul.discovery.register=true
|
||||
spring.cloud.consul.discovery.enabled=false
|
||||
|
||||
# MySQL (ShardingSphere)
|
||||
spring.shardingsphere.datasource.ds0.jdbc-url=jdbc:mysql://192.168.3.12:3307/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true
|
||||
spring.shardingsphere.datasource.ds0.username=root
|
||||
spring.shardingsphere.datasource.ds0.password=123456
|
||||
|
||||
# Redis
|
||||
spring.redis.host=127.0.0.1
|
||||
spring.redis.port=6379
|
||||
spring.redis.password=1qaz!QAZ
|
||||
spring.redis.database=5
|
||||
|
||||
# Kafka
|
||||
cloudwalk.event.bootstrap-servers=127.0.0.1:9092
|
||||
cloudwalk.event.group-id=cw-elevator-application-test
|
||||
|
||||
# Feign targets
|
||||
feign.device.name=cwos-portal
|
||||
feign.cwos-portal.name=cwos-portal
|
||||
feign.ninca-crk-std.name=ninca-crk-std
|
||||
ninca-crk-std.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
|
||||
ninca-crk-std.ribbon.listOfServers=127.0.0.1:16106
|
||||
ninca-crk-std.ip=127.0.0.1:16106
|
||||
|
||||
# Other
|
||||
feign.hystrix.enable=true
|
||||
feign.okhttp.enable=true
|
||||
ribbon.ReadTimeout=10000
|
||||
ribbon.ConnectTimeout=10000
|
||||
elevator.application.key=xinghewan
|
||||
elevator.application.time=600
|
||||
elevator.application.keyA=5B7DEF88FF04
|
||||
floor.building.id=605560539791228928
|
||||
sendRecord.boolean=false
|
||||
@@ -0,0 +1,119 @@
|
||||
# deploy/v2-maven \uFF1Amaven \u6784\u5EFA cw-elevator-application-2.0.0.jar\uFF08\u540C\u76EE\u5F55\u542F\u52A8\uFF09
|
||||
# \u751F\u4EA7\u6A21\u62DF\uFF1Aaccess-control \u4E1A\u52A1/\u5206\u8868/\u95E8\u7981\u9608\u503C\u7B49\u89C1\u540C\u76EE\u5F55 application-access-control.properties
|
||||
# \uFF08\u4E0E \u661F\u4E2D\u5FC3/cw-elevator-application-V1.0.0.20211103 \u5BF9\u9F50\uFF09\u3002\u672C\u6587\u4EF6\u4FDD\u7559\u7AEF\u53E3\u3001JDBC/Redis/Ribbon/Kafka \u7B49\u9A8C\u8BC1\u73AF\u5883\u8986\u76D6\u3002
|
||||
server.port=18081
|
||||
server.tomcat.uri-encoding=UTF-8
|
||||
spring.application.name=elevator-app
|
||||
# Boot 1.5 \u65E0 spring.main.allow-bean-definition-overriding\uFF1B\u82E5\u91CD\u590D Bean \u9700\u5728\u4EE3\u7801\u4FA7\u6D88\u6B67\u4E49\u6216\u5347\u7EA7 Spring Boot
|
||||
|
||||
|
||||
# spring\u914D\u7F6E
|
||||
spring.mvc.throw-exception-if-no-handler-found=true
|
||||
spring.mvc.locale=zh_CN
|
||||
# \u8D44\u6E90\u6587\u4EF6\u914D\u7F6E
|
||||
spring.messages.basename=access-control
|
||||
spring.messages.always-use-message-format=true
|
||||
spring.messages.encoding=utf-8
|
||||
# http\u914D\u7F6E
|
||||
spring.http.multipart.max-file-size=200MB
|
||||
spring.http.multipart.max-request-size=200MB
|
||||
spring.http.encoding.force=true
|
||||
spring.http.encoding.charset=UTF-8
|
||||
spring.http.encoding.enabled=true
|
||||
# \u65E5\u5FD7\u914D\u7F6E
|
||||
logging.config=classpath:logs/logback.xml
|
||||
logging.file=${spring.application.name}
|
||||
logging.path=logs
|
||||
logging.level.root=info
|
||||
logging.level.cn.cloudwalk=info
|
||||
# mybatis\u914D\u7F6E
|
||||
mybatis.mapper-locations=classpath*:cn/cloudwalk/elevator/**/*.xml
|
||||
mybatis.config-location=classpath:mapper/mybatis-config.xml
|
||||
# \u5E8F\u5217\u53F7\u914D\u7F6E
|
||||
cloudwalk.serial.enabled=true
|
||||
cloudwalk.serial.serial-length=8
|
||||
cloudwalk.serial.serial-type=redis
|
||||
cloudwalk.serial.serial-redis-key=CLOUDWALK-ACS-SERIAL-KEY
|
||||
# \u7F13\u5B58\u914D\u7F6E
|
||||
cloudwalk.spring.cache.expires=CACHE_NAME_APPLICATIONIDS#21600,ACS_DeviceTypesCache#7200,ACS_DeviceTypeFeaturesCache#7200,ACS_DeviceAttrsCache#7200,ACS_RecordStatisticsCache#90000,ACS_AreaTreeCache#60
|
||||
# \u5185\u90E8\u63A5\u53E3\u8C03\u7528\u5BA2\u6237\u7AEF\u53CA\u8D85\u65F6\u914D\u7F6E
|
||||
feign.hystrix.enable=true
|
||||
feign.httpclient.enable=false
|
||||
feign.okhttp.enable=true
|
||||
ribbon.http.client.enabled=false
|
||||
ribbon.okhttp.enabled=true
|
||||
ribbon.ReadTimeout=10000
|
||||
ribbon.ConnectTimeout=10000
|
||||
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
|
||||
# \u5065\u5EB7\u68C0\u67E5\u914D\u7F6E
|
||||
management.health.redis.enabled=false
|
||||
management.health.db.enabled=false
|
||||
# \u6570\u636E\u8131\u654F\u914D\u7F6E
|
||||
cloudwalk.datafield.enable=true
|
||||
cloudwalk.datafield.securityKey=d4b2aabc97394a12a27fc3cca6cd9ba1
|
||||
cloudwalk.datafield.encrypt=AES
|
||||
# redis\u914D\u7F6E\uFF08\u672C\u673A Docker\uFF1Aybs-redis 6379->6379\uFF0C\u82E5\u7528 craftlabs-redis \u6539\u4E3A 6380\uFF09
|
||||
spring.redis.host=127.0.0.1
|
||||
spring.redis.port=6379
|
||||
# \u672C\u673A Redis \u65E0\u5BC6\u7801\u65F6\u5FC5\u987B\u4FDD\u7559\u4E0B\u884C\u7A7A\u503C\uFF0C\u4EE5\u8986\u76D6 fat-jar \u5185\u5D4C\u65E7\u5BC6\u7801\uFF08\u5426\u5219 Redisson ERR AUTH\uFF09
|
||||
spring.redis.password=
|
||||
spring.redis.database=5
|
||||
spring.redis.timeout=0
|
||||
spring.redis.pool.max-active=10
|
||||
spring.redis.pool.max-idle=1
|
||||
spring.redis.pool.max-wait=10
|
||||
spring.redis.pool.min-idle=0
|
||||
# \u6570\u636E\u5E93sharding\u914D\u7F6E
|
||||
spring.shardingsphere.datasource.names=ds0
|
||||
spring.shardingsphere.datasource.ds0.type=com.zaxxer.hikari.HikariDataSource
|
||||
spring.shardingsphere.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver
|
||||
spring.shardingsphere.datasource.ds0.jdbc-url=jdbc:mysql://192.168.3.12:3307/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true
|
||||
spring.shardingsphere.datasource.ds0.username=root
|
||||
spring.shardingsphere.datasource.ds0.password=123456
|
||||
spring.shardingsphere.datasource.ds0.connection-timeout=60000
|
||||
spring.shardingsphere.datasource.ds0.maximum-pool-size=20
|
||||
spring.shardingsphere.datasource.ds0.minimum-idle=5
|
||||
spring.shardingsphere.datasource.ds0.max-lifetime=1765000
|
||||
spring.shardingsphere.datasource.ds0.auto-commit=true
|
||||
spring.shardingsphere.datasource.ds0.pool-name=ds0-pool
|
||||
spring.shardingsphere.props.sql.show=false
|
||||
spring.shardingsphere.sharding.default-data-source-name=ds0
|
||||
# \u5FAE\u670D\u52A1\u670D\u52A1\u540D\u914D\u7F6E
|
||||
feign.device.name=cwos-portal
|
||||
feign.resource.name=cwos-portal
|
||||
feign.cwos-portal.name=cwos-portal
|
||||
feign.ninca-crk-std.name=ninca-crk-std
|
||||
feign.davinci-portal.name=cwos-portal
|
||||
feign.component-organization.name=ninca-common-component-organization
|
||||
feign.ninca-common.name=ninca-common
|
||||
feign.mqtt.name=cloudwalk-device-thirdparty
|
||||
# CWOS\u4E8B\u4EF6\u914D\u7F6E
|
||||
cloudwalk.event.bootstrap-servers=192.168.3.12:9092
|
||||
cloudwalk.event.group-id=cw-elevator-application-1
|
||||
cloudwalk.event.handler-executor-config.core-pool-size=10
|
||||
cloudwalk.event.handler-executor-config.maximum-pool-size=30
|
||||
# \u5206\u5E03\u5F0F\u9501\u914D\u7F6E
|
||||
intelligent.lock.enable=true
|
||||
intelligent.lock.config.default-wait-time=10000
|
||||
lockWatchdogTimeout=21000
|
||||
# PERSON_NAME_SPACE
|
||||
person.name.space=recordEvent
|
||||
elevator.application.key=xinghewan
|
||||
elevator.application.time=600
|
||||
elevator.application.keyA=5B7DEF88FF04
|
||||
ninca-crk-std.ip=10.128.161.95:16106
|
||||
#\u53D1\u9001\u7B2C\u4E09\u65B9\u6570\u636Eip
|
||||
sendRecord.ip=hrec.star-river.com:32165
|
||||
sendRecord.token.corpId=53db867a8bb747a1bd04dd1afcad8ca6
|
||||
sendRecord.token.appKey=293e2d708f0143c2957b702cef44d951
|
||||
sendRecord.token.appSecret=5f6995009b864669b52041b8f5dc4625
|
||||
sendRecord.boolean=true
|
||||
|
||||
# \u8BBE\u5907\u5904\u7406\u7EBF\u7A0B\u6C60\u914D\u7F6E
|
||||
ninca.update.floor.pool.corePoolSize=5
|
||||
ninca.update.floor.pool.maxPoolSize=5
|
||||
ninca.update.floor.pool.queueCapacity=100000
|
||||
ninca.update.floor.pool.keepAliveSeconds=150
|
||||
ninca.update.floor.pool.allowCoreThreadTimeOut=true
|
||||
#\u697C\u680Bid
|
||||
floor.building.id=605560539791228928
|
||||
@@ -0,0 +1,18 @@
|
||||
server.port=16112
|
||||
server.tomcat.uri-encoding=UTF-8
|
||||
spring.application.name=elevator-app
|
||||
spring.profiles.active=access-control
|
||||
# consul\u914D\u7F6E
|
||||
spring.cloud.consul.host=371bfca4972c43d2aefcf302d0a4a277
|
||||
spring.cloud.consul.port=8500
|
||||
spring.cloud.consul.enabled=true
|
||||
spring.cloud.consul.discovery.register=true
|
||||
spring.cloud.consul.discovery.enabled=false
|
||||
spring.cloud.consul.discovery.prefer-ip-address=true
|
||||
spring.cloud.consul.discovery.instance-id=${spring.application.name}-${spring.cloud.client.ipAddress}:${server.port}
|
||||
spring.cloud.consul.discovery.ip-address=${spring.cloud.client.ipAddress}
|
||||
spring.cloud.consul.discovery.deregister=false
|
||||
# zookeeper\u914D\u7F6E
|
||||
dubbo.registry.address=zookeeper://10.0.22.207:2181
|
||||
dubbo.protocol.port=16107
|
||||
dubbo.provider.version=1.0
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+17
@@ -0,0 +1,17 @@
|
||||
Manifest-Version: 1.0
|
||||
Implementation-Title: cw-elevator-application-starter
|
||||
Implementation-Version: 2.0-SNAPSHOT
|
||||
Archiver-Version: Plexus Archiver
|
||||
Built-By: zebra
|
||||
Implementation-Vendor-Id: cn.cloudwalk.elevator
|
||||
Spring-Boot-Version: 1.5.17.RELEASE
|
||||
Implementation-Vendor: Pivotal Software, Inc.
|
||||
Main-Class: org.springframework.boot.loader.JarLauncher
|
||||
Start-Class: cn.cloudwalk.elevator.ElevatorApplication
|
||||
Spring-Boot-Classes: BOOT-INF/classes/
|
||||
Spring-Boot-Lib: BOOT-INF/lib/
|
||||
Created-By: Apache Maven 3.9.10
|
||||
Build-Jdk: 1.8.0_482
|
||||
Implementation-URL: http://projects.spring.io/spring-boot/cw-elevator-
|
||||
application-reactor/cw-elevator-application-starter/
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
#Generated by Apache Maven
|
||||
#Wed Apr 29 12:15:25 CST 2026
|
||||
version=2.0-SNAPSHOT
|
||||
groupId=cn.cloudwalk.elevator
|
||||
artifactId=cw-elevator-application-starter
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>cn.cloudwalk.elevator</groupId>
|
||||
<artifactId>cw-elevator-application-reactor</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<artifactId>cw-elevator-application-starter</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>cw-elevator-application-starter</name>
|
||||
<description>可执行 Spring Boot 入口:repackage 为单 JAR 发布包(对齐历史 V1 starter 形态)。</description>
|
||||
|
||||
<properties>
|
||||
<alibaba.eclipse.codestyle.path>${project.basedir}/../../docs/style/alibaba-eclipse-codestyle.xml</alibaba.eclipse.codestyle.path>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mybatis.spring.boot</groupId>
|
||||
<artifactId>mybatis-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-cache</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.cloudwalk</groupId>
|
||||
<artifactId>cloudwalk-device-sdk-protocol-entity</artifactId>
|
||||
<version>2.2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.cloudwalk.elevator</groupId>
|
||||
<artifactId>cw-elevator-application-web</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${elevator.release.finalName}</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>net.revelc.code.formatter</groupId>
|
||||
<artifactId>formatter-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
# run.sh 将本文件合并为 SPRING_APPLICATION_JSON,覆盖 jar 内 Redis 配置。
|
||||
spring.redis.host=192.168.3.12
|
||||
spring.redis.port=6379
|
||||
spring.redis.password=1qaz!QAZ
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
# 与当前目录下 application.properties 同路径启动 V2(maven 构建)包。
|
||||
# 默认优先系统 JDK 8;若只有 JDK11+ 会自动附加 --add-opens。
|
||||
# ELEVATOR_USE_ENV_JAVA=1 ./run.sh 使用当前 JAVA_HOME(如 Conda)。
|
||||
# 发布包内脚本与 JAR、properties 均位于发布根目录(与 cw-elevator-application-V1.0.0.20211103 布局一致)。
|
||||
set -euo pipefail
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# shellcheck source=../common-java.sh
|
||||
source "${SCRIPT_DIR}/../common-java.sh"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
JAR=""
|
||||
for candidate in $(ls -1t cw-elevator-application-*.jar 2>/dev/null || true); do
|
||||
if [[ "${candidate}" == *.jar.original ]]; then
|
||||
continue
|
||||
fi
|
||||
JAR="${candidate}"
|
||||
break
|
||||
done
|
||||
if [[ -z "${JAR}" || ! -f "${JAR}" ]]; then
|
||||
echo "缺少 cw-elevator-application-*.jar,请在 deploy 目录执行: ./sync-jars.sh" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
_pick_java_home
|
||||
if [[ ! -x "${JAVA_HOME}/bin/java" ]]; then
|
||||
echo "ERROR: 未找到可执行的 JDK。请安装 openjdk-8-jdk,或设定 JAVA_HOME / ELEVATOR_USE_ENV_JAVA=1 ./run.sh(使用 Conda 等当前环境)。" >&2
|
||||
exit 1
|
||||
fi
|
||||
JAVA="${JAVA_HOME}/bin/java"
|
||||
OPEN_FLAGS=()
|
||||
while IFS= read -r line; do
|
||||
[[ -n "$line" ]] && OPEN_FLAGS+=("$line")
|
||||
done < <(_jdk8_open_flags "$JAVA")
|
||||
|
||||
# 强制走 Consul:不再注入本地 application*.properties / redis-override.properties。
|
||||
# shellcheck disable=SC2086
|
||||
exec "$JAVA" "${OPEN_FLAGS[@]}" ${ELEVATOR_JAVA_OPTS:-} -jar "$JAR"
|
||||
Reference in New Issue
Block a user