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安装,可直接分发使用,适合日常自动化拉取代码、批量更新仓库场景。

相关推荐
七老板的blog1 小时前
多阶段 AI 评测流水线架构设计与实践
java·人工智能·spring
程序员cxuan1 小时前
Codex 一直 Reconnecting?我最后发现,常见就两个坑
人工智能·后端·程序员
qq_458148201 小时前
科大讯飞实时语音识别(rtasr)真实项目踩坑经验总结与手把手教学真实可运行Demo
java·开发语言·websocket·语音识别
创业之路&下一个五年1 小时前
mvvm中v和vm关系,vm中v和m的关系?
java·开发语言·javascript
阿昌喜欢吃黄桃1 小时前
Java优质开源AI项目
java·ai·langchain·开源·rag·springai·langchain4j
程序员海军2 小时前
沪漂五周年了:我越来越迷茫了
前端·人工智能·后端
biubiubiu07062 小时前
SpringBoot3.5.4 AOP环绕通知使用
java·spring boot
fox_lht2 小时前
13.3.测试的组织方式
开发语言·后端·rust
西安邮电大学2 小时前
Redis四大经典缓存问题
java·redis·后端·其他·面试