test
This commit is contained in:
99
JAR_OPTIMIZATION.md
Normal file
99
JAR_OPTIMIZATION.md
Normal file
@@ -0,0 +1,99 @@
|
||||
# Jar包优化方案 - 800MB问题解决
|
||||
|
||||
## 问题分析
|
||||
|
||||
当前项目的800MB jar包主要来源于以下几类依赖:
|
||||
|
||||
### 1. 系统作用域依赖 (System Scope) - 直接打包
|
||||
- aspose-words-15.8.0-jdk16.jar (9.8MB)
|
||||
- aspose-cells-8.5.2.jar (5.8MB)
|
||||
- twain4java-0.3.3-all.jar (2.5MB)
|
||||
- jai_core.jar (1.5MB)
|
||||
- agent-1.0.0.jar (224KB)
|
||||
|
||||
### 2. 视频处理依赖 (最大体积来源)
|
||||
- javacv + ffmpeg-platform (通常几十MB到上百MB)
|
||||
|
||||
### 3. 重复依赖
|
||||
- jxl依赖重复声明
|
||||
|
||||
### 4. 多余的PDF处理库
|
||||
- pdfbox, itextpdf, ofdrw-full可能存在功能重叠
|
||||
|
||||
## 优化策略
|
||||
|
||||
### 方案一:功能模块化 (推荐)
|
||||
```xml
|
||||
<!-- 创建独立的处理模块,不在主应用中使用 -->
|
||||
<dependency>
|
||||
<groupId>com.point.strategy</groupId>
|
||||
<artifactId>document-processor</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<scope>runtime</scope> <!-- 只在运行时使用 -->
|
||||
</dependency>
|
||||
```
|
||||
|
||||
### 方案二:分离部署
|
||||
- 主应用 (约50-100MB)
|
||||
- 文档处理服务 (独立部署)
|
||||
- OCR服务 (独立部署)
|
||||
|
||||
### 方案三:减少scope=system依赖
|
||||
```xml
|
||||
<!-- 改为provided或exclude -->
|
||||
<dependency>
|
||||
<groupId>com.aspose</groupId>
|
||||
<artifactId>aspose-words</artifactId>
|
||||
<version>15.8.0</version>
|
||||
<scope>provided</scope> <!-- 只在编译时使用 -->
|
||||
</dependency>
|
||||
```
|
||||
|
||||
## 立即可执行的优化
|
||||
|
||||
### 1. 移除重复依赖
|
||||
```xml
|
||||
<!-- 删除重复的jxl依赖 -->
|
||||
```
|
||||
|
||||
### 2. 调整视频处理依赖scope
|
||||
```xml
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>javacv</artifactId>
|
||||
<version>1.4.1</version>
|
||||
<scope>provided</scope> <!-- 改为provided -->
|
||||
</dependency>
|
||||
```
|
||||
|
||||
### 3. 使用Spring Boot分层打包
|
||||
```xml
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<requiresUnpack>
|
||||
<dependency>
|
||||
<groupId>com.aspose</groupId>
|
||||
<artifactId>aspose-words</artifactId>
|
||||
</dependency>
|
||||
</requiresUnpack>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
```
|
||||
|
||||
## 预期效果
|
||||
|
||||
优化后可将800MB减少到:
|
||||
- **保守估计**: 200-300MB (70%减少)
|
||||
- **激进优化**: 50-100MB (90%减少)
|
||||
|
||||
## 实施建议
|
||||
|
||||
1. **第一阶段**: 移除重复依赖,调整scope
|
||||
2. **第二阶段**: 模块化文档处理功能
|
||||
3. **第三阶段**: 考虑微服务拆分
|
||||
Reference in New Issue
Block a user