Skip to content

Commit cd8811e

Browse files
committed
add Claude.md
1 parent 0c8e943 commit cd8811e

1 file changed

Lines changed: 107 additions & 0 deletions

File tree

CLAUDE.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# CLAUDE.md
2+
3+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4+
5+
## 项目概述
6+
7+
这是TIS的官方插件仓库,一个基于Maven的多模块Java项目。项目包含多种数据同步插件,支持DataX、Flink CDC、Hudi、StarRocks等多种数据处理引擎。
8+
9+
## 常用构建命令
10+
11+
### 基础构建命令
12+
- 完整构建:`mvn clean install`
13+
- 跳过测试构建:`mvn clean install -Dmaven.test.skip=true`
14+
- 部署:`mvn deploy`
15+
16+
### 特定插件构建
17+
项目提供了多个专用构建脚本:
18+
19+
- **Hudi相关插件**:使用 `pkg.sh` 脚本
20+
```bash
21+
# 构建Hudi相关插件(包含MySQL CDC和Hudi sink)
22+
mvn install -Dmaven.test.skip=true -pl tis-datax/tis-datax-local-executor,tis-datax/tis-hive-flat-table-builder-plugin,tis-datax/tis-ds-mysql-v5-plugin,tis-datax/tis-datax-hudi-plugin,tis-incr/tis-flink-cdc-mysql-plugin,tis-incr/tis-sink-hudi-plugin -am -Dappname=all
23+
```
24+
25+
- **部分模块构建**:使用 `build_partial.sh`
26+
```bash
27+
mvn install -Dappname=all -pl tis-incr/tis-flink-chunjun-oracle-plugin,tis-incr/tis-flink-chunjun-mysql-plugin,tis-datax/tis-ds-mysql-v5-plugin -am
28+
```
29+
30+
### Maven Profiles
31+
项目支持多个环境profile:
32+
- `default-emr`:默认EMR环境 (Spark 2.4.4, Hadoop 2.7)
33+
- `aliyun-emr`:阿里云EMR环境 (Spark 3.2.1, Hadoop 3.2)
34+
- `cdh`:Cloudera CDH环境 (Spark 3.2.1, Hadoop 3.0.0-cdh6.3.2)
35+
36+
使用profile构建:`mvn clean install -P aliyun-emr`
37+
38+
### 测试相关
39+
- 运行单个测试:`mvn test -Dtest=ClassName`
40+
- 跳过测试:`mvn install -Dmaven.test.skip=true`
41+
- 项目使用JUnit 4.13进行单元测试,使用Testcontainers进行集成测试
42+
43+
## 项目架构
44+
45+
### 核心模块结构
46+
- **tis-datax/**:DataX相关插件,包含各种数据源和数据目标的连接器
47+
- MySQL、Oracle、PostgreSQL、StarRocks、Doris、Hudi等数据库插件
48+
- 本地执行器和远程执行器
49+
- **tis-incr/**:增量同步相关插件,主要基于Flink CDC
50+
- **tis-k8s-plugin/**:Kubernetes集成插件
51+
- **tis-plugin-test/**:测试容器和测试工具
52+
- **tis-e2e/**:端到端测试套件
53+
54+
### 插件系统
55+
项目使用自定义的TPI(TIS Plugin Interface)插件系统:
56+
- 插件打包格式:`.tpi` 文件
57+
- 插件基类:继承自TIS Plugin框架
58+
- 插件配置:使用Maven TPI Plugin (`maven-tpi-plugin`)
59+
60+
### 依赖管理
61+
- 项目版本:4.3.0
62+
- Java版本:1.8
63+
- 主要外部依赖:
64+
- Hadoop 2.7.3/3.2.1(根据profile)
65+
- Hive 2.3.1/3.1.3
66+
- Hudi 0.14.1
67+
- Flink CDC 3.4.0
68+
- PowerJob 4.3.6
69+
- Testcontainers 1.18.3
70+
71+
## 开发指南
72+
73+
### 添加新插件模块
74+
1. 在相应目录下创建新的Maven模块
75+
2. 更新父pom.xml中的`<modules>`部分
76+
3. 插件需要继承TIS插件框架的基类
77+
4. 使用`maven-tpi-plugin`进行插件打包
78+
79+
### 测试策略
80+
- 单元测试:使用JUnit和Mockito
81+
- 集成测试:使用Testcontainers启动真实数据库容器
82+
- 端到端测试:在tis-e2e模块中进行
83+
84+
### 插件开发注意事项
85+
- 插件依赖需要在父pom中的`dependencyManagement`中声明
86+
- 避免在插件中包含TIS核心依赖(使用provided scope)
87+
- 注意classpath依赖排除配置:`maven-tpi-plugin.classpathDependentExcludes`
88+
89+
## 部署和发布
90+
91+
### TPI文件部署
92+
- 使用 `tisasm-maven-plugin` 进行插件打包和部署
93+
- 插件文件扩展名:`.tpi`
94+
- 部署子目录:`tis-plugin`
95+
96+
### 同步工具
97+
- `syn-tpi.sh`:同步TPI文件的脚本
98+
- `copy-2-remote-node.sh`:将插件复制到远程节点
99+
100+
## 环境兼容性
101+
102+
项目需要支持多种大数据环境:
103+
- **标准环境**:Spark 2.4.4 + Hadoop 2.7.3
104+
- **阿里云EMR**:Spark 3.2.1 + Hadoop 3.2
105+
- **Cloudera CDH**:Spark 3.2.1 + CDH 6.3.2
106+
107+
在开发时需要考虑不同版本的兼容性问题,特别是Hadoop和Spark的API差异。

0 commit comments

Comments
 (0)