前沿资讯/我的第一个开源项目|CommonUtilLibrary:从零打造通用工具库的成长印记
我的第一个开源项目|CommonUtilLibrary:从零打造通用工具库的成长印记
我的第一个开源项目|CommonUtilLibrary:从零打造通用工具库的成长印记

2025-08-26发布

投稿作者:AbrahamCaiJin

GitCode 平台 G-Star 毕业项目 CommonUtilLibrary 项目作者


你写的第一行代码,或许会被忘记。 但你第一个开源项目的星星,却可能照亮你的整个开发旅程。

一、写在前面:那天我点下了 “Create Repository”

很多年后回头看,我依然清晰记得那一刻。

那是一个再普通不过的深夜,桌上泡面还冒着热气,我却一边打着哈欠一边兴奋地敲下:

git init

项目名叫 CommonUtilLibrary,一个集成了日期处理、字符串扩展、通用加解密、线程安全工具等模块的 Java 工具集。

GitCode地址:https://gitcode.com/AbrahamCaiJin/CommonUtilLibrary

GitHub地址:https://github.com/AbrahamCaiJin/CommonUtilLibrary

说实话,这并不是一个“惊艳”的项目。但对我而言,它就是我的「开源初体验」。

二、为什么我要做这件事?

还记得我写这库的初衷,仅仅是因为——工作中重复写了太多重复逻辑,比如:

  • SharePreference缓存数据 → AppSharePreferenceMgr
  • 银行卡管理 → BankCheck
  • 提供App数据清理工作的类 → AppCleanMgr
  • 缓存工具类 → AppACache
  • App应用退出 → AppExit2Back
  • 管理和回收Activity → AppDavikActivityMgr
  • 获取App应用版本信息 → AppApplicationMgr
  • 软键盘管理 → AppKeyBoardMgr
  • App网络管理 → AppNetworkMgr
  • 手机管理工具类 → AppPhoneMgr
  • 反射工具类 → AppReflectionMgr
  • 获取本地指定资源信息 → AppResourceMgr
  • 字符串判断工具类 → AppStringUtils
    … …
    这些逻辑虽然不复杂,但在多个项目中高频出现,写着写着就有了个想法:

👉 何不把这些公共方法统一整理、封装并模块化?

而这时,“开源”这两个字像一道光突然照进来:

“能不能不只是自己用,还分享给其他开发者?”

三、CommonUtilLibrary 是什么?

我给它的定义是:“一个轻量、易用的 Java 通用工具集。”

主要模块包括:

  • AppDateMgr: 日期计算、格式转换、时间区间等
  • AppStringUtils: 字符串非空判断、格式标准化
  • EncryptUtils: AES、RSA、Base64、MD5 等加解密封装
  • JsonUtils: 封装了 Jackson 与 Gson 的通用转换接口
  • SafeTools: 提供线程安全容器初始化方法、原子操作封装

⬇️ 部分代码如下:

image.png 因篇幅限制有节选,详情请在原项目查看

虽然并不复杂,但它背后承载的是我多年业务开发中的“踩坑总结 + 代码提炼”。

四、第一次 Star 和第一次 Issue

收到第一个 Star 的那一刻,我几乎跳了起来。 那是项目发布后的第二天,来自一个陌生 ID 的 Star 让我意识到——原来真的有人在看我写的东西!

紧接着,一个 Issue 让我“梦醒”了:

“你在 DateUtils 中的 getStartOfDay 方法在某些时区下会出现偏移,请考虑使用 ZonedDateTime。”

说实话,当时有点懵。但也是这个时刻,我意识到:

“开源不是炫技,而是责任。”

于是我查资料、改代码、补测试,还顺手更新了文档,最终关闭了人生第一个 Issue。

五、我从中学到了什么?

开源不是写代码那么简单,它让我真正收获了:

  1. 工程意识的提升
  • 如何模块化设计;
  • 如何写清晰的注释与文档;
  • 如何写单元测试;
  • 如何持续集成(CI)和发版。

  1. 技术沟通能力

你需要学会:

  • 接受别人指出的问题;
  • 明确地回复 PR 和 Issue;
  • 考虑兼容性与社区反馈。

  1. 自驱力 & 成就感

没人强迫你更新,你就是自己的产品经理、开发、测试和运营。

而每一个 Fork、每一次 PR、每一封感谢邮件,都是对你的肯定。

六、项目目前的状态与进展

CommonUtilLibrary 目前:

  • 🌟 累计 Star 数: 2800+
  • ⏳ 累计更新: 32 commits
  • 📦 Maven 中央仓库发布成功(支持一键引入)
  • 🤝 被多个 Spring Boot 项目作为基础工具库集成使用

我依然会在空闲时间维护它,或许不会频繁更新,但它代表着一种持续学习与输出的姿态。

七、项目结构截图

image.png

image.png

CommonUtil/
├── application/
│   ├── AppUtils.java
├── encryption/
│   ├── AESUtils.java
│   ├── CipherUtils.java
│   ├── DESUtils.java
│   ├── MD5Utils.java
│   ├── RSAUtils.java
│   ├── SHAUtils.java
│   ├── TripleDESUtils.java
├── view/
│   ├── ScratchCard.java
... ...

image.png

八、建议每一个开发者都拥有自己的开源仓库

你不需要是技术大牛,也不需要做出什么“爆款框架”。

只要你愿意:

  • 把自己项目中抽象出的工具沉淀出来;
  • 把踩坑经验整理成文档;
  • 把学习过程记录下来分享出去…

你已经是一个开源贡献者了。✨

九、结语:一颗 Star,一段成长

我的开源旅程还在继续,而那个凌晨3点、手指颤抖提交代码的我,还在心中鼓励着今天的我。

最后,我想送给每一个准备开源的你一句话:

“不必等完美才开始,开始之后才会逐渐变得完美。”

如果你也有类似的开源初体验,欢迎在评论区留言,一起点亮更多开发者的“星光之路”。


🔗 项目地址:https://gitcode.com/AbrahamCaiJin/CommonUtilLibrary

📮 欢迎 Star、PR、Issue 或来信交流,一起让代码温暖世界。