From 78b9685ee1ce176dce6c1d1fad538e4398169056 Mon Sep 17 00:00:00 2001
From: liu <362165265@qq.com>
Date: Sat, 31 Jan 2026 23:14:34 +0800
Subject: [PATCH] Remove pom.xml and RedisClipSync.java files; update README.md
to reflect new project structure and build instructions.
---
.cursor/rules/Chinese.mdc | 6 ++
README.md | 68 +++++++++++++++----
pom.xml => code/pom.xml | 33 +++++----
.../src}/main/java/RedisClipSync.java | 0
linux/build-and-run.sh | 25 +++++++
linux/run.sh | 16 +++++
windows/build-and-run.bat | 33 +++++++++
windows/run.bat | 18 +++++
8 files changed, 172 insertions(+), 27 deletions(-)
create mode 100644 .cursor/rules/Chinese.mdc
rename pom.xml => code/pom.xml (65%)
rename {src => code/src}/main/java/RedisClipSync.java (100%)
create mode 100644 linux/build-and-run.sh
create mode 100644 linux/run.sh
create mode 100644 windows/build-and-run.bat
create mode 100644 windows/run.bat
diff --git a/.cursor/rules/Chinese.mdc b/.cursor/rules/Chinese.mdc
new file mode 100644
index 0000000..b2a078f
--- /dev/null
+++ b/.cursor/rules/Chinese.mdc
@@ -0,0 +1,6 @@
+---
+alwaysApply: true
+---
+
+Please execute the generate commit message command in Chinese.
+生成 Git 提交信息(Commit Message)时,必须强制使用中文。
diff --git a/README.md b/README.md
index b2efac3..061e719 100644
--- a/README.md
+++ b/README.md
@@ -2,23 +2,62 @@
基于 Redis 的双向剪切板同步:主机将本地剪切板广播到从机,从机将本地剪切板上传到主机并按从机 ID 追加写入 TXT 文件。
-## 构建
+## 目录结构
-```bash
-mvn clean package
+```
+RedisClipSync/
+ code/ # 代码与构建
+ pom.xml
+ src/main/java/
+ target/ # 打包输出 redis-clip-sync.jar
+ windows/ # Windows 脚本
+ build-and-run.bat # 一键打包并运行
+ run.bat # 仅运行(需已打包)
+ linux/ # Linux 脚本
+ build-and-run.sh # 一键打包并运行
+ run.sh # 仅运行(需已打包)
+ config.master.properties.example
+ config.slave.properties.example
+ config.properties # 运行前从 example 复制并修改
+ README.md
+ 剪切板同步.md
```
-在 `target/` 下生成 `redis-clip-sync.jar`(已包含 Jedis 依赖,可直接运行)。
+## 构建与运行
-## 运行
+### 一键脚本(推荐)
-确保工作目录包含 `config.properties`,或通过参数/系统属性指定配置路径:
+脚本会从各自目录自动切换到项目根目录再执行,配置与 `clipboard_logs/` 均在根目录。
+
+**Windows**(在项目根目录或 `windows/` 下执行均可)
+- **windows/build-and-run.bat**:先打包再启动。
+ 双击运行,或:`windows\build-and-run.bat [配置文件路径]`(默认 `config.properties`)。
+- **windows/run.bat**:不重新打包,直接运行。
+ 用法:`windows\run.bat [配置文件路径]`。
+
+**Linux**(需先赋予执行权限:`chmod +x linux/*.sh`)
+- **linux/build-and-run.sh**:先打包再启动。
+ `./linux/build-and-run.sh [配置文件路径]`(默认 `config.properties`)。
+- **linux/run.sh**:不重新打包,直接运行。
+ 用法:`./linux/run.sh [配置文件路径]`。
+
+运行前请将 `config.master.properties.example` 或 `config.slave.properties.example` 复制为 `config.properties` 并修改。
+
+### 手动构建与运行
+
+在项目根目录执行:
```bash
-java -jar target/redis-clip-sync.jar
-# 或指定配置
-java -jar target/redis-clip-sync.jar /path/to/config.properties
-java -Dconfig=/path/to/config.properties -jar target/redis-clip-sync.jar
+mvn -f code/pom.xml clean package
+```
+
+在 `code/target/` 下生成 `redis-clip-sync.jar`(已包含 Jedis 依赖)。
+
+确保工作目录为项目根目录并包含 `config.properties`,或通过参数指定配置路径:
+
+```bash
+java -jar code/target/redis-clip-sync.jar
+java -jar code/target/redis-clip-sync.jar /path/to/config.properties
```
## 配置
@@ -50,15 +89,14 @@ slave.id=192.168.1.50
`slave.id` 决定主机端生成的文件名(如 `192.168.1.50.txt`)。
-## 目录结构
+## 运行目录说明
-主机启动后会自动创建保存目录:
+主机启动后会在配置的 `master.save.dir`(默认 `./clipboard_logs/`)下自动创建保存目录。建议在项目根目录运行脚本,这样 `config.properties` 与 `clipboard_logs/` 均在根目录下:
```
-/
- - redis-clip-sync.jar
+RedisClipSync/
- config.properties
- - clipboard_logs/ # 自动创建
+ - clipboard_logs/ # 自动创建(Master)
- 192.168.1.50.txt # 从机 A 的记录
- 192.168.1.51.txt # 从机 B 的记录
```
diff --git a/pom.xml b/code/pom.xml
similarity index 65%
rename from pom.xml
rename to code/pom.xml
index e694a9a..86a660b 100644
--- a/pom.xml
+++ b/code/pom.xml
@@ -43,18 +43,27 @@
org.apache.maven.plugins
maven-assembly-plugin
3.6.0
-
-
-
- RedisClipSync
-
-
-
- jar-with-dependencies
-
- redis-clip-sync
- false
-
+
+
+ make-assembly
+ package
+
+ single
+
+
+
+
+ RedisClipSync
+
+
+
+ jar-with-dependencies
+
+ redis-clip-sync
+ false
+
+
+
diff --git a/src/main/java/RedisClipSync.java b/code/src/main/java/RedisClipSync.java
similarity index 100%
rename from src/main/java/RedisClipSync.java
rename to code/src/main/java/RedisClipSync.java
diff --git a/linux/build-and-run.sh b/linux/build-and-run.sh
new file mode 100644
index 0000000..bafb450
--- /dev/null
+++ b/linux/build-and-run.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+set -e
+
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
+cd "$PROJECT_ROOT"
+
+echo "========================================"
+echo " Redis 剪切板同步 - 一键打包并运行"
+echo "========================================"
+echo
+
+echo "[1/2] 正在打包..."
+if ! mvn -f code/pom.xml -q clean package -DskipTests; then
+ echo "打包失败,请确保已安装 Maven 且可执行 mvn。"
+ exit 1
+fi
+echo "打包完成: code/target/redis-clip-sync.jar"
+echo
+
+CONFIG="${1:-config.properties}"
+echo "[2/2] 正在启动(配置文件: $CONFIG)..."
+echo "提示: 按 Ctrl+C 可退出程序"
+echo
+exec java -jar code/target/redis-clip-sync.jar "$CONFIG"
diff --git a/linux/run.sh b/linux/run.sh
new file mode 100644
index 0000000..99fe429
--- /dev/null
+++ b/linux/run.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+set -e
+
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
+cd "$PROJECT_ROOT"
+
+CONFIG="${1:-config.properties}"
+
+if [[ ! -f code/target/redis-clip-sync.jar ]]; then
+ echo "未找到 code/target/redis-clip-sync.jar,请先运行 linux/build-and-run.sh 进行打包。"
+ exit 1
+fi
+
+echo "启动 Redis 剪切板同步(配置: $CONFIG)..."
+exec java -jar code/target/redis-clip-sync.jar "$CONFIG"
diff --git a/windows/build-and-run.bat b/windows/build-and-run.bat
new file mode 100644
index 0000000..daf71a2
--- /dev/null
+++ b/windows/build-and-run.bat
@@ -0,0 +1,33 @@
+@echo off
+chcp 65001 >nul
+setlocal
+
+:: 切换到项目根目录(脚本在 windows\ 下)
+cd /d "%~dp0.."
+
+echo ========================================
+echo Redis 剪切板同步 - 一键打包并运行
+echo ========================================
+echo.
+
+:: 1. 打包
+echo [1/2] 正在打包...
+call mvn -f code\pom.xml -q clean package -DskipTests
+if errorlevel 1 (
+ echo 打包失败,请确保已安装 Maven 且可执行 mvn。
+ pause
+ exit /b 1
+)
+echo 打包完成: code\target\redis-clip-sync.jar
+echo.
+
+:: 2. 运行(配置文件可选,默认 config.properties)
+set CONFIG=config.properties
+if not "%~1"=="" set CONFIG=%~1
+
+echo [2/2] 正在启动(配置文件: %CONFIG%)...
+echo 提示: 按 Ctrl+C 可退出程序
+echo.
+java -jar code\target\redis-clip-sync.jar %CONFIG%
+
+pause
diff --git a/windows/run.bat b/windows/run.bat
new file mode 100644
index 0000000..ddc33ff
--- /dev/null
+++ b/windows/run.bat
@@ -0,0 +1,18 @@
+@echo off
+chcp 65001 >nul
+
+:: 切换到项目根目录(脚本在 windows\ 下)
+cd /d "%~dp0.."
+
+set CONFIG=config.properties
+if not "%~1"=="" set CONFIG=%~1
+
+if not exist "code\target\redis-clip-sync.jar" (
+ echo 未找到 code\target\redis-clip-sync.jar,请先运行 windows\build-and-run.bat 进行打包。
+ pause
+ exit /b 1
+)
+
+echo 启动 Redis 剪切板同步(配置: %CONFIG%)...
+java -jar code\target\redis-clip-sync.jar %CONFIG%
+pause