Java 实现 Git 自动克隆工具,打包成 Windows 独立 EXE(免安装JDK)

前言 :日常工作中经常需要批量、自动拉取 Git 代码仓库,手动操作繁琐低效。本文手把手教你用 Java 调用系统 Git 命令实现 git clone 自动克隆,并且完整实现 代码编写→Jar打包→带JRE打包EXE,最终生成 Windows 可直接双击运行的独立程序,电脑无需安装JDK,开箱即用。

一、项目实现思路

  1. Java 通过 ProcessBuilder 调用 Windows 原生 Git 命令,稳定性远超第三方Git依赖包
  1. 捕获命令执行日志与错误信息,方便排查问题
  1. IDEA 打包成可执行 Jar 包
  1. 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打包配置

点击右上角 +JARFrom 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. 准备所需文件

  • JRE运行环境:从本地JDK安装目录复制 jre 文件夹(与Jar包放在同一目录)

最终目录结构:

复制代码
Git克隆工具/
├─ git-clone.jar   # IDEA打包的可执行Jar
└─ jre/            # 本地提取的运行环境

2. Launch4j 核心配置

打开Launch4j工具,仅需配置5个必填项,其余默认即可:

  1. Bin output file :选择EXE输出路径,命名为 Git克隆工具.exe
  1. Jar :选中准备好的 git-clone.jar 文件
  1. Bundled JRE path :填写相对路径 ./jre(关键:绑定本地运行环境)
  1. Header type :选择 Console(弹出控制台显示运行日志,必备)
  1. 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主类,重新打包。

七、总结

  1. Java 通过 ProcessBuilder 调用系统Git命令,简洁稳定,适配所有Windows环境;

  2. 整套流程实现了 代码自动化→打包→桌面独立程序,摆脱命令行操作;

  3. 最终EXE程序免JDK安装,可直接分发使用,适合日常自动化拉取代码、批量更新仓库场景。

相关推荐
kfaino4 小时前
码农的AI翻身(三)你好,我叫 Embedding
后端·ai编程
葫芦和十三5 小时前
图解 MongoDB 18|复制集拓扑:Primary、Secondary 和 Arbiter 的分工
后端·mongodb·面试
爱勇宝5 小时前
大多数人不是在使用 AI 赚钱,而是在帮 AI 公司赚钱
前端·后端·程序员
程序员cxuan8 小时前
虽迟但到!GPT-5.6 终于来了!
人工智能·后端·程序员
IT_陈寒10 小时前
React的这个渲染问题连官方文档都没说清楚
前端·人工智能·后端
狼爷11 小时前
吃透 Java Function 接口,搞定 99% 的 Stream 场景
java·函数式编程
葫芦和十三11 小时前
图解 MongoDB 15|journal 与持久化:写入怎么不丢,崩溃怎么恢复
后端·mongodb·面试
葫芦和十三11 小时前
图解 MongoDB 16|压缩:snappy、zstd 和 zlib 的取舍
后端·mongodb·面试
苍何11 小时前
终于找到免费开源TTS模型,克隆声音不要钱,本地电脑也能跑
后端
用户5936087414011 小时前
Spring AI 集成 DeepSeek 原生供应商并实现think模式
后端