
Shell脚本系列(二): Maven私服的“一键搬运工”, 告别重复deploy!
各位Javaer,请回忆一下,你是否经历过这样的绝望:
mvn deploy:deploy-file -DgroupId=... -DartifactId=... -Dversion=... -Dpackaging=... -Dfile=... -Durl=... -DrepositoryId=...
当需要将一个、十个、甚至上百个本地JAR包上传到公司新搭建的Maven私服(Nexus/Artifactory)时,一遍又一遍地复制、粘贴、修改这条长得令人发指的命令,是不是感觉自己的灵魂都在被抽空?
今天,我们要终结这种“机械劳动”!向你隆重介绍 deploy_local_jars.sh —— Maven私服的“一键搬运工”!
哪些场景下,它能救你一命?
- 首次搭建私有仓库:公司刚启用Nexus,需要将历史项目积累的大量第三方、非公开的JAR包快速填充进去。用它,一键搞定!
- 项目迁移整合:一个非Maven的老项目要改造,它依赖的一堆本地JAR包需要统一上传到私服进行规范管理。用它,轻松迁移!
- 离线环境部署:在与外网隔离的内网开发,需要先把外部下载好的所有依赖,一次性批量部署到内部私服供团队使用。用它,完美解决!
- 仓库数据恢复:极端情况下私服数据损坏,但某位同事的本地
.m2仓库缓存最全,可以用此脚本从本地“反向同步”,快速恢复数据。
脚本源码 deploy_local_jars.sh
这个脚本能自动扫描指定目录,解析 pom.xml,智能地将所有JAR包、POM文件(甚至 sources.jar, javadoc.jar)批量上传到你的私服。
#!/bin/bash
# ==============================================================================
# 脚本功能: 遍历本地 Maven 仓库的指定目录,解析 pom.xml 文件,
# 并将对应的 jar/pom 文件部署到私有 Maven 仓库。
#
# 版本: 2.0
# ==============================================================================
# --- 请修改以下配置 ---
# 你的私有仓库的 URL (releases 或 snapshots)
REPO_URL="https://xxx.xxx.com/repository/third-party/"
# 你的私有仓库在 settings.xml 中配置的 <server> ID
REPO_ID="third-party-releases"
# 要扫描的本地 Maven 仓库目录
# 例如: /home/zml/maven/repository/com/bocsoft/berc
SOURCE_DIR="/home/zml/maven/repository/com/kjhxtc"
# --- 配置结束 ---
# ... [脚本中段内容已在您的问题中提供,此处省略] ...
# 3. 查找所有的 pom 文件并遍历
find "$SOURCE_DIR" -name "*.pom" | while read -r pom_file; do
# ... [处理逻辑] ...
done
echo ""
echo "========================================================================"
echo "脚本执行完毕。"
```*(注:为保持篇幅,此处省略了脚本的中间部分,您可以从文末获取完整代码)*
#### 如何召唤这位“搬运工”?
与上一个脚本不同,这个脚本在使用前,需要你**简单配置3个地方**。
**第一步:检查环境**
1. 确保你安装了 `maven` (`mvn` 命令可用)。
2. 确保你安装了 `xmllint`。
* Ubuntu/Debian: `sudo apt-get install libxml2-utils`
* CentOS/RHEL: `sudo yum install libxml2`
3. 确保你的 `~/.m2/settings.xml` 中已配置好私服的认证信息(`<server>` 标签),脚本中的 `REPO_ID` 必须和 `<server>` 的 `<id>` 完全一致。
**第二步:修改脚本配置**
将完整代码保存为 `deploy_local_jars.sh`,然后打开它,找到顶部的配置区,**修改以下三个变量**:
```bash
# --- 请修改以下配置 ---
# 【修改这里】=> 你的私有仓库的上传地址
# 例如:https://nexus.mycompany.com/repository/my-releases/
REPO_URL="https://xxx.xxx.com/repository/third-party/"
# 【修改这里】=> 你在 settings.xml 中配置的 <server> ID
# 例如:my-nexus-releases
REPO_ID="third-party-releases"
# 【修改这里】=> 你想扫描的本地 Maven 仓库路径
# 例如:/home/user/.m2/repository/com/aliyun
SOURCE_DIR="/home/zml/maven/repository/com/kjhxtc"
# --- 配置结束 ---
第三步:执行!
- 给予执行权限:
chmod +x deploy_local_jars.sh - 运行脚本:
./deploy_local_jars.sh ```现在,去泡杯咖啡吧!脚本会自动完成剩下的一切,你将在终端看到一个个依赖被成功上传的日志。
### 总结
deploy_local_jars.sh 是一个典型的“一次配置,终身受益”的效率工具。它将你从Maven私服初始化的繁重体力活中彻底解放出来,让你能更专注于核心的开发工作。
如果你觉得这个脚本有用,别忘了点个赞,并分享给还在手动 deploy 的同事们!
源码地址: https://github.com/zhengmingliang/code-fragment/tree/main/shell/linux/maven
Q.E.D.


