前言 :日常工作中经常需要批量、自动拉取 Git 代码仓库,手动操作繁琐低效。本文手把手教你用 Java 调用系统 Git 命令实现 git clone 自动克隆,并且完整实现 代码编写→Jar打包→带JRE打包EXE,最终生成 Windows 可直接双击运行的独立程序,电脑无需安装JDK,开箱即用。
一、项目实现思路
- Java 通过
ProcessBuilder调用 Windows 原生 Git 命令,稳定性远超第三方Git依赖包
- 捕获命令执行日志与错误信息,方便排查问题
- IDEA 打包成可执行 Jar 包
- Launch4j 整合JRE打包为独立 EXE,实现免JDK运行
运行前置依赖:运行程序的电脑需安装 Git 并配置系统环境变量(CMD可直接识别git命令)
二、完整可运行Java代码
代码内置目录校验、日志输出、执行结果判断,解决文件夹已存在导致的克隆失败问题
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
/**
* Git自动克隆工具
* 可直接打包为EXE在Windows运行
*/
public class GitCloneTool {
public static void main(String[] args) {
// 【可自行修改】Git仓库地址 & 本地克隆保存路径
String gitRepoUrl = "https://gitee.com/xxx/demo.git";
String cloneDirPath = "D:\\GitDownload\\demo";
// 初始化目录对象
File targetDir = new File(cloneDirPath);
// 如果文件夹已存在,强制删除旧目录(避免克隆失败)
if (targetDir.exists()) {
System.out.println("检测到目标目录已存在,正在删除旧目录...");
deleteDir(targetDir);
System.out.println("旧目录删除完成!");
}
// 构建git clone命令
ProcessBuilder processBuilder = new ProcessBuilder("git", "clone", gitRepoUrl, cloneDirPath);
// 设置命令执行根目录
processBuilder.directory(new File("D:\\"));
try {
// 启动系统进程执行命令
Process process = processBuilder.start();
// 打印标准输出日志
System.out.println("\n========== 克隆日志 ==========");
printStream(process.getInputStream());
// 打印错误日志
System.out.println("\n========== 错误信息 ==========");
printStream(process.getErrorStream());
// 等待执行完成,获取执行状态码
int exitCode = process.waitFor();
System.out.println("\n========== 执行结果 ==========");
if (exitCode == 0) {
System.out.println("✅ Git仓库克隆成功!");
} else {
System.err.println("❌ Git仓库克隆失败!错误码:" + exitCode);
}
} catch (IOException | InterruptedException e) {
System.err.println("程序执行异常:" + e.getMessage());
e.printStackTrace();
}
}
/**
* 读取并打印命令输出流日志
*/
private static void printStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
System.out.print(new String(buffer, 0, len));
}
inputStream.close();
}
/**
* 递归删除文件夹及内部所有文件
*/
private static void deleteDir(File dir) {
if (dir.isDirectory()) {
File[] files = dir.listFiles();
if (files != null) {
for (File file : files) {
// 递归删除子文件/子文件夹
deleteDir(file);
}
}
}
// 删除当前文件/空文件夹
dir.delete();
}
}
三、IDEA 打包可执行Jar包(详细步骤)
1. 打开打包配置
快捷键 Ctrl+Alt+Shift+S 打开 Project Structure ,选择左侧 Artifacts
2. 新建Jar打包配置
点击右上角 + → JAR → From modules with dependencies
- Module:选择当前项目模块
- Main Class :选择
GitCloneTool(程序入口主类)
- 其他默认配置不变,点击OK
3. 执行打包
顶部菜单栏选择 Build → Build Artifacts → 选中当前项目 → Build
打包成功后,文件输出路径:项目根目录/out/artifacts/项目名_jar/xxx.jar
✅ 验证:双击Jar文件,能弹出控制台并运行程序,即为打包成功
四、Jar 打包为独立 EXE(免安装JDK)
普通Jar运行需要电脑安装JDK,这里使用 Launch4j 工具,整合JRE生成独立EXE,任意Windows电脑可直接运行。
1. 准备所需文件
- Launch4j工具:免费免安装,官网直接下载:https://launch4j.sourceforge.io/
- JRE运行环境:从本地JDK安装目录复制
jre文件夹(与Jar包放在同一目录)
最终目录结构:
Git克隆工具/
├─ git-clone.jar # IDEA打包的可执行Jar
└─ jre/ # 本地提取的运行环境
2. Launch4j 核心配置
打开Launch4j工具,仅需配置5个必填项,其余默认即可:
- Bin output file :选择EXE输出路径,命名为
Git克隆工具.exe
- Jar :选中准备好的
git-clone.jar文件
- Bundled JRE path :填写相对路径
./jre(关键:绑定本地运行环境)
- Header type :选择 Console(弹出控制台显示运行日志,必备)
- Icon(可选):可自定义程序图标,无需求可留空
3. 生成EXE程序
点击右上角 齿轮图标(Wrapper),等待编译完成,即可得到独立EXE文件。
五、最终发布与使用方式
发布时需打包 完整文件夹,缺一不可:
Git克隆工具.zip
├─ Git克隆工具.exe
└─ jre/
使用方法:解压压缩包,直接双击exe运行,无需安装Java、无需配置环境。
⚠️ 唯一要求:运行设备需安装Git并配置系统环境变量。
六、常见问题与解决方案
1. 提示 'git' 不是内部或外部命令
原因:电脑未安装Git,或Git未配置系统环境变量
解决:安装Git并配置PATH环境变量,CMD输入git可正常识别即可。
2. 克隆失败,无日志输出
原因:目标文件夹已存在、仓库地址错误、网络不通
解决:代码已内置自动删除旧目录功能,检查仓库地址和网络即可。
3. EXE体积过大
解决:精简jre文件夹,删除无用字体、文档、冗余dll文件,可大幅缩减体积。
4. Jar双击无反应
原因:打包时未指定主类
解决:重新配置Artifacts,手动选择程序入口main主类,重新打包。
七、总结
-
Java 通过
ProcessBuilder调用系统Git命令,简洁稳定,适配所有Windows环境; -
整套流程实现了 代码自动化→打包→桌面独立程序,摆脱命令行操作;
-
最终EXE程序免JDK安装,可直接分发使用,适合日常自动化拉取代码、批量更新仓库场景。