Apache shenyu 源码打包

我爱海鲸 2025-10-22 19:00:38 暂无标签

简介shenyu admin bootstrap git

官网:https://shenyu.apache.org/zh/

github:  https://github.com/apache/shenyu

shenyu-bootstrap在2.7.0后的版本就不支持将bootstrap注册到nacos上了,需要在pom文件中添加如下依赖后在重新打包

        <!--shenyu instance start-->
        <dependency>
            <groupId>org.apache.shenyu</groupId>
            <artifactId>shenyu-spring-boot-starter-registry</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--shenyu registry end-->



需要注释掉,不然http也会进行注册,然后报错
        <dependency>
            <groupId>org.apache.shenyu</groupId>
            <artifactId>shenyu-spring-boot-starter-client-beat</artifactId>
            <version>${project.version}</version>
        </dependency>


重新打包shenyu的时候,需要在centos上安装git和make

步骤 命令
安装 Git sudo yum install git -y 或 sudo dnf install git -y
验证版本 git --version
设置用户名邮箱 git config --global user.name "xxx"

git clone https://github.com/apache/shenyu.git

cd shenyu

查看make的版本
make --version

CentOS 默认可能不安装 make 和编译工具链,你需要手动安装。
安装开发工具包(推荐方式)
运行以下命令安装完整的编译环境(包含 make, gcc, g++, automake, autoconf 等):
sudo yum groupinstall "Development Tools" -y

如果你只需要 make,可以单独安装:
sudo yum install make -y

 
shenyu-admin源码打包后需要使用mysql的驱动放到ext-lib目录中
把mysql驱动放到shenyu-admin-update(自己创建)
创建Dockerfile
# 使用源码打包 shenyu-admin 镜像作为基础镜像
FROM apache/shenyu-admin:latest

# 将本地的 MySQL 驱动复制到镜像的 ext-lib 目录
COPY mysql-connector-java-8.0.18.jar /opt/shenyu-admin/ext-lib/

构建镜像:
docker build -t apache/shenyu-admin-mysql:2.7.0.3 .
 
# ShenYu 项目打包指南

## 项目概述

ShenYu是一个高性能的API网关,采用微服务架构设计。本项目包含两个主要的可执行模块:
- **shenyu-bootstrap**: 网关核心服务,负责请求路由和插件处理
- **shenyu-admin**: 管理后台服务,提供Web界面进行配置管理

## 项目结构分析

### 核心模块
- `shenyu-bootstrap`: 网关服务模块
- `shenyu-admin`: 管理后台模块
- `shenyu-dist`: 分发打包模块
  - `shenyu-admin-dist`: admin打包配置
  - `shenyu-bootstrap-dist`: bootstrap打包配置

### 技术栈
- **Java版本**: 17
- **Spring Boot**: 3.3.1
- **构建工具**: Maven
- **打包方式**: Spring Boot Maven Plugin + Assembly Plugin

## 打包方式

### 方式一:使用Makefile(推荐)

项目提供了便捷的Makefile命令,支持多种打包方式:

#### 1. 构建所有模块
```bash
# 构建admin和bootstrap
make build-all

# 或者分别构建
make build-admin    # 只构建admin
make build-bootstrap # 只构建bootstrap
```

#### 2. 构建Docker镜像
```bash
# 构建所有Docker镜像
make build-all-image

# 或者分别构建
make build-admin-image    # 构建admin镜像
make build-bootstrap-image # 构建bootstrap镜像
```

#### 3. 发布镜像
```bash
# 构建并发布多平台镜像
make publish-all-images
```

### 方式二:使用Maven命令

#### 1. 构建shenyu-admin
```bash
# 进入项目根目录
cd /path/to/shenyu

# 构建admin
./mvnw -am -pl shenyu-dist/shenyu-admin-dist \
    -Dmaven.javadoc.skip=true \
    -Drat.skip=true \
    -Djacoco.skip=true \
    -DskipTests \
    -Prelease \
    clean package
```

#### 2. 构建shenyu-bootstrap
```bash
# 构建bootstrap
./mvnw -am -pl shenyu-dist/shenyu-bootstrap-dist \
    -Dmaven.javadoc.skip=true \
    -Drat.skip=true \
    -Djacoco.skip=true \
    -DskipTests \
    -Prelease \
    clean package
```

#### 3. 同时构建两个模块
```bash
# 构建所有分发包
./mvnw -am -pl shenyu-dist \
    -Dmaven.javadoc.skip=true \
    -Drat.skip=true \
    -Djacoco.skip=true \
    -DskipTests \
    -Prelease \
    clean package
```

## 打包输出

### 文件结构
打包完成后,会在对应的`target`目录下生成以下文件:

#### shenyu-admin-dist
```
shenyu-dist/shenyu-admin-dist/target/
├── apache-shenyu-2.7.0.2-SNAPSHOT-admin-bin.tar.gz  # 压缩包
├── apache-shenyu-2.7.0.2-SNAPSHOT-admin-bin.tar.gz.md5  # MD5校验文件
└── apache-shenyu-2.7.0.2-SNAPSHOT-admin-bin.tar.gz.sha1 # SHA1校验文件
```

#### shenyu-bootstrap-dist
```
shenyu-dist/shenyu-bootstrap-dist/target/
├── apache-shenyu-2.7.0.2-SNAPSHOT-bootstrap-bin.tar.gz  # 压缩包
├── apache-shenyu-2.7.0.2-SNAPSHOT-bootstrap-bin.tar.gz.md5  # MD5校验文件
└── apache-shenyu-2.7.0.2-SNAPSHOT-bootstrap-bin.tar.gz.sha1 # SHA1校验文件
```

### 解压后的目录结构
```
apache-shenyu-2.7.0.2-SNAPSHOT-admin-bin/
├── bin/                    # 启动脚本
│   ├── shenyu-admin.sh     # Linux启动脚本
│   └── shenyu-admin.bat    # Windows启动脚本
├── conf/                   # 配置文件
│   ├── application.yml     # 应用配置
│   └── logback.xml         # 日志配置
├── lib/                    # 依赖jar包
│   ├── shenyu-admin-2.7.0.2-SNAPSHOT.jar
│   └── [其他依赖jar包...]
├── ext-lib/               # 扩展库目录
└── db/                    # 数据库脚本
    ├── init/              # 初始化脚本
    └── upgrade/           # 升级脚本
```

## 环境要求

### 系统要求
- **操作系统**: Linux/Windows/macOS
- **Java版本**: JDK 17+
- **内存**: 建议2GB以上
- **磁盘空间**: 建议1GB以上

### 构建环境要求
- **Maven**: 3.6+
- **Git**: 用于获取提交ID
- **Docker**: 如需构建镜像(可选)

## 配置说明

### Maven配置
项目使用以下Maven插件进行打包:
- `spring-boot-maven-plugin`: 创建可执行jar包
- `maven-assembly-plugin`: 创建分发包
- `checksum-maven-plugin`: 生成校验文件

### 打包配置
- **打包格式**: tar.gz
- **包含内容**:
  - 可执行jar包
  - 配置文件
  - 启动脚本
  - 数据库脚本
  - 依赖库

## 启动方式

### 解压并启动
```bash
# 解压admin包
tar -xzf apache-shenyu-2.7.0.2-SNAPSHOT-admin-bin.tar.gz
cd apache-shenyu-2.7.0.2-SNAPSHOT-admin-bin

# 启动admin(Linux)
./bin/shenyu-admin.sh

# 启动admin(Windows)
bin\shenyu-admin.bat
```

### 直接运行jar包
```bash
# 运行admin
java -jar lib/shenyu-admin-2.7.0.2-SNAPSHOT.jar

# 运行bootstrap
java -jar lib/shenyu-bootstrap-2.7.0.2-SNAPSHOT.jar
```

## 常见问题

### 1. 构建失败
**问题**: Maven构建失败
**解决方案**:
- 检查Java版本是否为17+
- 检查Maven版本是否为3.6+
- 清理本地仓库:`mvn clean`

### 2. 内存不足
**问题**: 构建过程中内存不足
**解决方案**:
```bash
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512m"
```

### 3. 依赖下载失败
**问题**: 依赖包下载失败
**解决方案**:
- 检查网络连接
- 配置Maven镜像源
- 清理本地仓库重新下载

### 4. 权限问题
**问题**: 脚本无执行权限
**解决方案**:
```bash
chmod +x bin/*.sh
```

## 高级配置

### 自定义打包参数
```bash
# 指定版本号
make build-admin VERSION=2.7.1

# 指定Docker仓库
make build-admin-image REGISTRY=your-registry.com
```

### 跳过测试
```bash
# 使用Maven跳过测试
./mvnw clean package -DskipTests
```

### 生成源码包
```bash
# 生成源码jar包
./mvnw source:jar
```

## 总结

ShenYu项目提供了完整的打包解决方案,支持:
1. **快速打包**: 使用Makefile一键构建
2. **灵活配置**: 支持多种构建参数
3. **完整分发**: 包含所有运行时依赖
4. **Docker支持**: 支持容器化部署
5. **多平台**: 支持Linux/Windows/macOS

建议使用Makefile方式进行打包,简单高效。如需自定义配置,可使用Maven命令进行精细控制。

你好:我的2025