ip2region xdb java 生成实现

编译安装

通过 maven 来编译可运行 jar 程序:

# cd 到 maker/java 根目录
mvn clean compile package

然会会在当前目录的 target 目录下得到一个 ip2region-maker-{version}.jar 的打包文件。

数据生成

通过 java -jar ip2region-maker-{version}.jar 来生成 xdb 二进制文件:

➜  java git:(master) java -jar target/ip2region-maker-3.0.0.jar 
ip2region xdb maker
java -jar ip2region-maker-{version}.jar [command options]
options:
 --src string           source ip text file path
 --dst string           destination binary xdb file path
 --version string       IP version, options: ipv4/ipv6, specify this flag so you don't get confused
 --field-list string    field index list imploded with ',' eg: 0,1,2,3-6,7
 --log-level string     set the log level, options: debug/info/warn/error

例如,通过默认的 data/ipv4_source.txt 原始数据,在当前目录生成一个 IPv4 的 ip2region_v4.xdb 二进制文件:

java -jar target/ip2region-maker-3.0.0.jar --src=../../data/ipv4_source.txt --dst=./ip2region_v4.xdb --version=ipv4
...
2025-09-13 00:33:06 INFO  org.lionsoul.ip2region.xdb.Maker write done, dataBlocks: 13827, indexBlocks: (683843, 720464), indexPtr: (955933, 11042415)
2025-09-13 00:33:06 INFO  org.lionsoul.ip2region.MakerApp Done, elapsed: 2 s

例如,通过默认的 data/ipv6_source.txt 有原始据,在当前目录生成一个 IPv6 的 ip2region_v6.xdb 二进制文件:

java -jar target/ip2region-maker-3.0.0.jar --src=../../data/ipv6_source.txt --dst=./ip2region_v6.xdb --version=ipv6
...
2025-09-13 00:35:34 INFO  org.lionsoul.ip2region.xdb.Maker write done, dataBlocks: 120446, indexBlocks: (16789611, 16855074), indexPtr: (6585371, 647078145)
2025-09-13 00:35:34 INFO  org.lionsoul.ip2region.MakerApp Done, elapsed: 67 s

生成过程中数据字段自定义请参考 xdb-v4文件生成#自定义数据字段

数据 查询/bench 测试

已经完成开发的 binding 都有查询和 bench 测试程序以及使用文档,你可以使用你熟悉的语言的 searcher 进行查询测试或者bench测试来确认数据的正确性和完整性。