目录

一、前言

1. 开源项目现状

2. Ant 编译原生痛点

3. 为什么选择 WorkBuddy 完成迁移

WorkBuddy 基础信息

WorkBuddy 安装步骤

二、编译前的准备工作

1. Ant 依赖解读

2. 开源项目下载

三、由 Ant 到 Maven 的升级之路

1. 组件升级替代规划

2. 提示词设计

3. 替代升级完整过程

四、编译升级成果展示

1. 升级技术说明

2. 升级文档说明

3. 本地编译测试

五、总结


一、前言

1. 开源项目现状

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

虽然管网提供了已经打好包的组件,但随着项目迭代、团队协作、云平台打包部署需求增多,我们在项目建设过程当中依然可能需要进行代码重构等操作。因此原生 Ant 构建的短板被无限放大,在落地智慧水务 GIS 可视化项目时,依赖管理、打包发布、多环境构建等环节踩了不少坑,于是下定决心想要完成构建工具迁移。

2. Ant 编译原生痛点

长期使用该 Ant 项目开发后,总结几个实打实影响开发效率的问题:

  1. 依赖管理混乱无统一规范

    所有 Jar 包直接存入项目 lib 目录,版本控制非常繁琐,ant依赖的配置麻烦,第三方依赖更新只能手动替换文件,极易出现版本冲突、重复 Jar、缺失依赖等问题;多人协作时,lib 目录文件差异经常导致本地能跑、服务器编译失败。

  2. 构建脚本硬编码,维护成本极高

    build.xml 中编译路径、输出目录、资源复制、JNI 本地库打包逻辑全部写死,修改编译输出路径、新增测试目录、区分开发 / 生产包都需要手写大量 XML 节点,无成熟插件生态复用。

  3. 缺乏标准化生命周期

    没有统一的 compile、test、package、install 流程,打包、单元测试、源码分离、上传私有仓库等功能需要自行编写任务,对接 CI/CD、腾讯云打包流水线非常不友好。

  4. 无标准化仓库分发能力

    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 安装步骤
  1. 前往官方渠道下载对应系统安装包,Windows 为 exe 安装程序,Mac/Linux 提供压缩包;

  2. Windows 直接双击安装,自定义安装路径,避免中文目录;Mac/Linux 解压后赋予执行权限 chmod +x workbuddy

  3. 完成简单登录授权后即可离线使用基础工程重构功能,无需全程联网。

言归正传,我们回到改造场景,如何使用WorkBuddy来完美适配本次 Ant 转 Maven 需求,核心优势三点:

  1. 自动化解析旧构建配置:可读取 build.xml 全部任务、依赖、资源拷贝规则,不用人工逐条梳理;

  2. 定制化提示词驱动重构:针对水务、JNI 混合 Java 项目定制专属指令,自动生成合规 pom,兼顾普通 Java 代码与 EPANET 本地内核打包逻辑;

  3. 迭代式修正,降低返工成本:生成 Maven 配置后可快速迭代调整,一键执行编译校验,省去反复手动改 pom、调试打包流程的时间。

对于非专职构建运维、深耕水务业务开发的工程师,用 WorkBuddy 替代纯手动改造,能把 1~2 天的工作量压缩至半天内完成。通过WorkBuddy,将升级替代的工作交给AI编辑器,我们给与提示词进行工作指导,最后拿到结果即可。

二、编译前的准备工作

1. Ant 依赖解读

下载源码后优先通读 ant.xml,梳理项目完整依赖与特殊构建逻辑,分为三类:

  1. 第三方 Java 依赖:日志工具、集合工具、数值计算工具,全部存放于项目 lib 文件夹,无版本标注;

  2. EPANET 原生 JNI 依赖:项目核心,包含 Windows/Linux 多平台 so/dll 本地库,Ant 脚本存在专属任务将原生库复制至编译输出目录;

  3. 项目内置资源与测试套件:测试用管网模型文件、单元测试类,Ant 单独配置 test 编译任务。

重点标记特殊逻辑:JNI 本地库复制、资源文件打包、测试代码编译,这部分是手动迁移最容易遗漏、导致 Maven 打包运行报错的核心点,后续会交给 WorkBuddy 统一处理。

2. 开源项目下载

  1. 拉取 Baseform-Epanet-Java-Library 完整源码,切换至仓库稳定主干分支;

  2. 本地配置 JDK21(该水力库仅兼容 JDK8,高版本存在 JNI 兼容性问题);

  3. 本地验证原生 Ant 编译流程:执行 ant clean && ant build,确认原始构建可正常生成 Jar、无编译报错,确保源码本身无损坏;

  4. 本地新建独立目录,复制完整源码副本,所有迁移改造操作在副本中进行,保留原始 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 构建体系。

模块

说明

核心类

epanet

主入口 + 常量

EPATool(命令行), Constants

hydraulic

水力模拟引擎

HydraulicSim, SparseMatrix

quality

单物种水质模拟

QualitySim

msx

MSX 多物种扩展

EpanetMSX, Chemical, Quality

network

网络数据模型

Network, I/O 解析器/生成器

ui

Swing LaunchPad

EpanetUI(GUI入口)

util

工具类

Utilities, XLSXWriter

原始 Ant 构建依赖的 JAR 资源清单:

JAR 文件

用途

Maven 坐标/状态

jeplite-0.8.7a-bin.jar

MSX 数学表达式解析

org.cheffo:jeplite:0.8.7a

xstream-1.3.jar

XML 序列化/反序列化

com.thoughtworks.xstream:xstream:1.3.1

poi-3.7-20101029.jar

Excel 读写(.xls)

org.apache.poi:poi:3.7

poi-ooxml-3.7-20101029.jar

Excel 读写(.xlsx)

org.apache.poi:poi-ooxml:3.7

jgoodies-looks-2.4.0.jar

Swing UI 外观美化

com.jgoodies:looks:2.2.2 ⚠️(最高可用版本)

jgoodies-common-1.1.1.jar

JGoodies 公共库

looks 2.2.2 已自包含,无需额外引入

forms_rt.jar

IntelliJ GUI 表单运行时

com.intellij:forms_rt:7.0.3 (provided)

dom4j/xbean/xmlbeans

POI 传递依赖

Maven 自动解析 ✅

javac2/asm/jdom

UI 表单编译(仅 jar_with_ui

IntelliJ 专用,不入 Maven

XHTML_Doclet_0.4.jar

Javadoc 生成

maven-javadoc-plugin 替代

四、编译升级成果展示

1. 升级技术说明

为了方便大家阅读,也方便使用者可以快速的了解和掌握从Ant改成Maven的编译方式的对比,我们可以选择让WorkBuddy来创建一个说明文档,对升级技术进行重要的解释说明。提示词设计如下:

生成一个说明文件,将上述过程和ant到maven的映射关系记录到文档中,格式为word

2. 升级文档说明

WorkBuddy 在重构完成后同步输出一份迁移说明文档,文档包含核心信息:

  1. 新旧构建体系对照表:每一条 Ant 任务对应的 Maven 插件与配置节点;

  2. 依赖变更清单:原 lib 下所有 Jar 对应的 Maven GroupId、ArtifactId、Version;

  3. JNI 本地库打包适配说明:解释 resources 插件特殊配置逻辑,适配多操作系统部署;

  4. 标准化 Maven 命令清单:

# 清理编译产物
mvn clean
# 编译源码
mvn compile
# 执行单元测试
mvn test
# 打包水力库 Jar
mvn package
# 安装至本地 Maven 仓库,供本地水务项目引用
mvn install

后续团队新人、CI/CD 流水线可直接使用这套标准命令,无需学习旧 Ant 脚本。

3. 本地编译测试

完成重构后分步本地验证,确保水力仿真核心功能无损坏:

  1. 执行 mvn clean compile,无编译报错,target 目录生成 class 文件;

  2. 执行 mvn test,全部原有单元测试用例运行通过,管网水力计算、节点流量、压力仿真结果与 Ant 构建版本完全一致;

  3. 执行 mvn package,生成完整 Jar 包,解压 Jar 可查看到 Windows、Linux 平台 dll/so 原生库与示例管网模型文件;

  4. 在现有智慧水务项目中,通过 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 安装流程、提示词设计、分步迁移思路,快速完成构建体系现代化升级。行文仓促,定有不足之处,欢迎各位朋友在评论区批评指正,不胜感激。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐