WorkBuddy 实操教程|手把手把水力开源库 Baseform-Epanet-Java-Library 从 Ant 改成 Maven
目录
一、前言
1. 开源项目现状
做智慧水务、管网仿真开发的朋友应该都接触过 EPANET 水力仿真引擎,而 Baseform-Epanet-Java-Library 是一套成熟的 Java 封装开源库,打通了 Java 应用与原生 EPANET 内核,广泛用于供水管网模拟、漏损分析、水力建模可视化等项目。但由于该仓库维护时间较早,项目构建体系全程基于 Ant,早年中小型水务项目使用尚可。

虽然管网提供了已经打好包的组件,但随着项目迭代、团队协作、云平台打包部署需求增多,我们在项目建设过程当中依然可能需要进行代码重构等操作。因此原生 Ant 构建的短板被无限放大,在落地智慧水务 GIS 可视化项目时,依赖管理、打包发布、多环境构建等环节踩了不少坑,于是下定决心想要完成构建工具迁移。
2. Ant 编译原生痛点
长期使用该 Ant 项目开发后,总结几个实打实影响开发效率的问题:
-
依赖管理混乱无统一规范
所有 Jar 包直接存入项目 lib 目录,版本控制非常繁琐,ant依赖的配置麻烦,第三方依赖更新只能手动替换文件,极易出现版本冲突、重复 Jar、缺失依赖等问题;多人协作时,lib 目录文件差异经常导致本地能跑、服务器编译失败。
-
构建脚本硬编码,维护成本极高
build.xml 中编译路径、输出目录、资源复制、JNI 本地库打包逻辑全部写死,修改编译输出路径、新增测试目录、区分开发 / 生产包都需要手写大量 XML 节点,无成熟插件生态复用。
-
缺乏标准化生命周期
没有统一的 compile、test、package、install 流程,打包、单元测试、源码分离、上传私有仓库等功能需要自行编写任务,对接 CI/CD、腾讯云打包流水线非常不友好。
-
无标准化仓库分发能力
Ant 构建产物只能本地导出 Jar,无法一键上传 Maven 私服、中央仓库,多服务复用该水力库只能拷贝 Jar,版本追溯困难。

3. 为什么选择 WorkBuddy 完成迁移
手动 Ant 转 Maven 的常规方案是人工逐条解析 build.xml、梳理依赖、手写 pom.xml,整个流程耗时久、容易遗漏 JNI、本地资源、测试套件等特殊构建逻辑,对于 EPANET 这种带本地原生库的水力库容错率更低。在正式介绍如何进行切换时,先简单介绍下 WorkBuddy:WorkBuddy 腾讯旗下的是全能 AI 工作台,一人指挥,全行业专家执行,从策略到交付一站搞定免部署·安装即用 | 多专家·多模型协同 | 全平台·桌面 / 主流 IM / 小程序,主打大模型驱动工程改造,支持 Ant/Gradle 转 Maven、老旧代码规范化重构、项目目录标准化梳理,非常适合遗留 Java 开源项目改造。WorkBuddy的官方下载地址如下:

WorkBuddy 基础信息
根据开发者的电脑操作系统,选择对应的类型进行下载安装即可:

我的本地WorkBuddy版本如下:

WorkBuddy 安装步骤
-
前往官方渠道下载对应系统安装包,Windows 为 exe 安装程序,Mac/Linux 提供压缩包;
-
Windows 直接双击安装,自定义安装路径,避免中文目录;Mac/Linux 解压后赋予执行权限
chmod +x workbuddy; -
完成简单登录授权后即可离线使用基础工程重构功能,无需全程联网。
言归正传,我们回到改造场景,如何使用WorkBuddy来完美适配本次 Ant 转 Maven 需求,核心优势三点:
-
自动化解析旧构建配置:可读取 build.xml 全部任务、依赖、资源拷贝规则,不用人工逐条梳理;
-
定制化提示词驱动重构:针对水务、JNI 混合 Java 项目定制专属指令,自动生成合规 pom,兼顾普通 Java 代码与 EPANET 本地内核打包逻辑;
-
迭代式修正,降低返工成本:生成 Maven 配置后可快速迭代调整,一键执行编译校验,省去反复手动改 pom、调试打包流程的时间。
对于非专职构建运维、深耕水务业务开发的工程师,用 WorkBuddy 替代纯手动改造,能把 1~2 天的工作量压缩至半天内完成。通过WorkBuddy,将升级替代的工作交给AI编辑器,我们给与提示词进行工作指导,最后拿到结果即可。
二、编译前的准备工作
1. Ant 依赖解读
下载源码后优先通读 ant.xml,梳理项目完整依赖与特殊构建逻辑,分为三类:
-
第三方 Java 依赖:日志工具、集合工具、数值计算工具,全部存放于项目 lib 文件夹,无版本标注;
-
EPANET 原生 JNI 依赖:项目核心,包含 Windows/Linux 多平台 so/dll 本地库,Ant 脚本存在专属任务将原生库复制至编译输出目录;
-
项目内置资源与测试套件:测试用管网模型文件、单元测试类,Ant 单独配置 test 编译任务。
重点标记特殊逻辑:JNI 本地库复制、资源文件打包、测试代码编译,这部分是手动迁移最容易遗漏、导致 Maven 打包运行报错的核心点,后续会交给 WorkBuddy 统一处理。

2. 开源项目下载
-
拉取
Baseform-Epanet-Java-Library完整源码,切换至仓库稳定主干分支; -
本地配置 JDK21(该水力库仅兼容 JDK8,高版本存在 JNI 兼容性问题);
-
本地验证原生 Ant 编译流程:执行
ant clean && ant build,确认原始构建可正常生成 Jar、无编译报错,确保源码本身无损坏; -
本地新建独立目录,复制完整源码副本,所有迁移改造操作在副本中进行,保留原始 Ant 项目用于对照回滚;我们也可以直接让WorkBuddy帮我们来实现。
三、由 Ant 到 Maven 的升级之路
1. 组件升级替代规划
梳理 Ant 任务与 Maven 标准组件一一对应,提前规划好替换方案,避免重构完成后功能缺失:
|
Ant 核心任务 |
Maven 替代方案 |
特殊适配说明 |
|---|---|---|
|
clean |
maven-clean-plugin |
清理 target 编译目录,替代 ant clean 任务 |
|
compile |
maven-compiler-plugin |
指定 JDK8 编译级别,适配旧水务代码语法 |
|
第三方 lib Jar |
pom.xml dependencies |
检索对应开源组件官方坐标,替换本地 lib 包 |
|
JNI 本地库复制 |
maven-resources-plugin |
配置资源过滤,将 dll/so 文件打包进输出 Jar |
|
test 单元测试 |
maven-surefire-plugin |
接管原有单元测试任务,构建阶段自动执行 |
|
package 打包 |
maven-jar-plugin |
标准化 Jar 打包,统一输出产物路径 |
同时删除项目原有 lib 文件夹,所有依赖统一通过 Maven 坐标管理,彻底解决依赖杂乱问题。
2. 提示词设计
针对带 JNI 本地库的水力 Java 项目,定制适配 WorkBuddy 的精准提示词,避免工具生成通用 pom 忽略 EPANET 特殊打包逻辑,核心提示词框架如下:
需求:
1、阅读 Baseform-Epanet-Java-Library-ant 这个库的源码,解读工程源码,整理输出所有依赖的的jar资源。
2、调整工程代码,使用maven来替代ant的编译和构建工程,代码和pom.xml在Baseform-Epanet-Java-Library-maven 这个工程中创建。
提示词核心思路:不做通用化重构,突出水力库、JNI 本地库、JDK等专属特征,让 WorkBuddy 识别项目特殊构建需求。
3. 替代升级完整过程
-
导入构建配置,初始化工程识别,打开 WorkBuddy ,打开项目的工作空间,选择改造副本源码根目录,粘贴上文定制提示词,启动工程分析。工具自动扫描全部 Java 源码、lib 依赖、资源文件、测试代码,输出一份依赖清单,核对清单中 EPANET 相关工具类无遗漏。

自动生成 Maven 目录与 pom.xml,工具根据提示词自动重构目录:拆分源码、测试代码、本地原生资源至 Maven 标准目录;检索所有第三方 Jar 对应的 Maven 坐标写入 dependencies;自动配置 compiler、resources、surefire、jar 四大核心插件。

-
人工核对关键配置修正,经过上述的步骤,你会看到在我们的工程目录下,已经自动添加了Pom.xml文件,但为了防止出现问题,我们选择人工进行核验;
-
核对第三方依赖版本,匹配原 Ant lib 中 Jar 的大版本号,避免版本断层导致水力仿真计算逻辑异常。
-
确认 pom 配置无误后,移除 build.xml、lib 目录、Ant 专属构建脚本,仅保留 Maven 构建体系。
|
模块 |
说明 |
核心类 |
|---|---|---|
|
|
主入口 + 常量 |
|
|
|
水力模拟引擎 |
|
|
|
单物种水质模拟 |
|
|
|
MSX 多物种扩展 |
|
|
|
网络数据模型 |
|
|
|
Swing LaunchPad |
|
|
|
工具类 |
|
原始 Ant 构建依赖的 JAR 资源清单:
|
JAR 文件 |
用途 |
Maven 坐标/状态 |
|---|---|---|
|
|
MSX 数学表达式解析 |
|
|
|
XML 序列化/反序列化 |
|
|
|
Excel 读写(.xls) |
|
|
|
Excel 读写(.xlsx) |
|
|
|
Swing UI 外观美化 |
|
|
|
JGoodies 公共库 |
looks 2.2.2 已自包含,无需额外引入 |
|
|
IntelliJ GUI 表单运行时 |
|
|
|
POI 传递依赖 |
Maven 自动解析 ✅ |
|
|
UI 表单编译(仅 |
IntelliJ 专用,不入 Maven |
|
|
Javadoc 生成 |
由 |
四、编译升级成果展示
1. 升级技术说明
为了方便大家阅读,也方便使用者可以快速的了解和掌握从Ant改成Maven的编译方式的对比,我们可以选择让WorkBuddy来创建一个说明文档,对升级技术进行重要的解释说明。提示词设计如下:
生成一个说明文件,将上述过程和ant到maven的映射关系记录到文档中,格式为word
2. 升级文档说明
WorkBuddy 在重构完成后同步输出一份迁移说明文档,文档包含核心信息:
-
新旧构建体系对照表:每一条 Ant 任务对应的 Maven 插件与配置节点;
-
依赖变更清单:原 lib 下所有 Jar 对应的 Maven GroupId、ArtifactId、Version;
-
JNI 本地库打包适配说明:解释 resources 插件特殊配置逻辑,适配多操作系统部署;
-
标准化 Maven 命令清单:

# 清理编译产物
mvn clean
# 编译源码
mvn compile
# 执行单元测试
mvn test
# 打包水力库 Jar
mvn package
# 安装至本地 Maven 仓库,供本地水务项目引用
mvn install
后续团队新人、CI/CD 流水线可直接使用这套标准命令,无需学习旧 Ant 脚本。
3. 本地编译测试
完成重构后分步本地验证,确保水力仿真核心功能无损坏:
-
执行
mvn clean compile,无编译报错,target 目录生成 class 文件; -
执行
mvn test,全部原有单元测试用例运行通过,管网水力计算、节点流量、压力仿真结果与 Ant 构建版本完全一致; -
执行
mvn package,生成完整 Jar 包,解压 Jar 可查看到 Windows、Linux 平台 dll/so 原生库与示例管网模型文件; -
在现有智慧水务项目中,通过 Maven 坐标引入该库,运行管网仿真业务功能,读取 EPANET 模型、水力计算、结果导出全部正常,无 JNI 加载失败、依赖缺失问题。

实测对比:改造前 Ant 打包 + 测试需要手动执行多条命令,且每次更换环境要处理 lib 依赖;改造后一条 mvn package 即可完成全流程构建,对接腾讯云 CODING 持续部署流水线时,直接内置 Maven 构建步骤,流水线配置大幅简化。最后来看一下打包完成的jar包信息:

五、总结
本次借助 WorkBuddy 完成老旧水力开源库 Baseform-Epanet-Java-Library 从 Ant 到 Maven 的完整迁移,前期简单安装配置即可上手,解决了长期以来 Ant 构建带来的依赖混乱、打包繁琐、云流水线适配困难等痛点。对于大量遗留水务、GIS、仿真类老旧 Java 开源项目,人工重构构建脚本效率低、极易遗漏 JNI、本地资源这类特殊逻辑,借助 WorkBuddy 配合项目专属提示词,能够自动化解析旧构建配置、生成标准化 Maven 工程,大幅降低改造门槛。
改造完成后,项目具备了现代 Java 工程的完整能力:统一依赖版本管控、标准化构建生命周期、支持私服分发、无缝对接云原生 CI/CD,后续基于这套水力库开发智慧供水管网、二供仿真、管网漏损模拟等业务,开发与部署效率会有明显提升。如果大家手上还有同类基于 Ant、Gradle 的老旧仿真开源库,也可以参考本文的 WorkBuddy 安装流程、提示词设计、分步迁移思路,快速完成构建体系现代化升级。行文仓促,定有不足之处,欢迎各位朋友在评论区批评指正,不胜感激。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)