JAVA后端拉取gitee仓库代码项目并将该工程打包成jar包

news2024/11/25 20:27:22

公司当前有一个系统用于导出项目,而每次导出的项目并不可以直接使用,需要手动从gitee代码仓库中获取一个模板代码然后将他们整合到一起它才是一个完整的项目,所以目前我的任务就是编写一个java程序可以自动地从gitee仓库拉取下来那个模板代码到指定地路径上去。并且我还要将这个java程序打包成jar包上传到先前创建好的私有仓库中去,这样可以在pom.xml中引入即可使用。

JGit

明确了任务目标,接下来就是要完成这个任务,在这里需要使用到JGit插件。如果你想在一个 Java 程序中使用 Git ,有一个功能齐全的 Git 库,那就是 JGit 。 JGit 是一个用 Java 写成的功能相对健全的 Git 的实现,它在 Java 社区中被广泛使用。 JGit 项目由 Eclipse 维护,它的主页在 JGit | The Eclipse Foundation 。

有很多种方式可以让 JGit 连接你的项目,并依靠它去写代码。 最简单的方式也许就是使用 Maven 。你可以通过在你的 pom.xml 文件里的 标签中增加像下面这样的片段来完成这个整合。

<dependency>
    <groupId>org.eclipse.jgit</groupId>
    <artifactId>org.eclipse.jgit</artifactId>
    <version>5.0.1.201806211838-r</version>
</dependency>

注意JGit插件和jdk版本地对应关系,由于本项目中使用的java版本是jdk8,所以JGit插件使用的版本也比较低。

这样之后,再在程序中将它引入即可以使用。

import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;

JAVA程序

接下来是编写java程序,我创建了以下代码的java程序。

package org.example;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;

import java.io.File;
import java.io.IOException;

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class CloneRepository {
    public static void main(String[] args) {
    }
    public static void Clone(String remoteUrl,String localPath,String username,String password){
        try {
            // 克隆远程仓库到本地目录
            System.out.println("Cloning from " + remoteUrl + " to " + localPath);
            Git.cloneRepository()
                    .setURI(remoteUrl)
                    .setDirectory(new File(localPath))
                    .setCredentialsProvider(new UsernamePasswordCredentialsProvider(username, password))
                    .call();
            System.out.println("Cloning completed.");
        } catch (GitAPIException e) {
            System.err.println("Exception occurred while cloning repository: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

注意这里面的Clone函数就是本次任务的关键函数,通过该函数,给定要拉取的url,要保存的路径和gitee仓库的用户名密码,即可拉取到目标仓库的代码到指定仓库地址。

打包成jar包

直接运行mvn deploy就可以将该项目打包成jar包并上传到私人仓库中去。(maven的私人仓库地址和仓库认证如何配置就不在这里介绍。)

测试程序(如何使用)

创建了一个测试程序,在其中的pom.xml文件中引入已经打包好的jar包(引入的仓库地址配置在settings.xml中,在这里也不过多赘述。)

在程序中编写好以下代码,然后点击运行。

package org.example;
import org.example.CloneRepository;
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
    public static void main(String[] args) {
        //gitee远程仓库地址
        String remoteUrl = "yourUrl";
        // 本地目录
        String localPath = "yourPath"; // 请替换为你想要克隆到的本地路径

        // Gitee 账号和密码
        String username = "yourUsername";
        String password = "yourPassword";
        CloneRepository.Clone(remoteUrl,localPath,username,password);
    }
}

即可看见在目标文件夹中拉取到了目标gitee仓库中的代码,这里要注意,在设置localPath的时候,所存的目标文件夹可以不存在,系统会自动创建,但是要保证所存的目标文件夹为空,否则会拉取失败。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1962560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

纯前端实现导出pdf文件(服务端不参与)

大致查阅了现阶段使用较多的几种方案,&#xff0c;大概有以下几种方式&#xff1a; 一、原生window.print()方法导出pdf 二、jspdf 三、jspdf html2canvas 四、pdfmake 方案优点缺点window.print()1、兼容性最好 2、可以将任意内容导出成 pdf 文档, 甚至是非改页面上的内容1…

⑦【从0制作自己的ros导航小车:上位机篇】02、ros1多机通讯与坐标变换可视化

从0制作自己的ros导航小车 前言一、ros1多机通讯二、rviz可视化小车坐标系 系列文章&#xff1a; ①【从0制作自己的ros导航小车&#xff1a;介绍及准备】 ②【从0制作自己的ros导航小车&#xff1a;下位机篇】01、工程准备_标准库移植freertos ③【从0制作自己的ros导航小车&a…

Sobel Operator

什么是图像边缘&#xff1f; 边缘是指图像中灰度或颜色强度发生显著变化的区域。 什么是Sobel operator Sobel算子是一种用于图像处理的边缘检测算子。它通过计算图像灰度值的梯度来检测图像中的边缘。 什么情况产生梯度&#xff1f; 黑与白交界处。 Sobel 算子原理 计算P…

MLP多层感知机与Pytorch实现

参考文章&#xff1a; 1.动手学深度学习——多层感知机&#xff08;原理解释代码详解&#xff09;_多层感知机 代码-CSDN博客 2.4.1. 多层感知机 — 动手学深度学习 2.0.0 documentation 3.深度理解多层感知机&#xff08;MLP&#xff09; | 米奇妙妙屋 1. 神经网络由来 神经网…

ChatGPT指导如何完整写出研究论文的摘要

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 在学术写作中&#xff0c;学习如何为研究论文撰写简短且内容丰富的摘要非常重要。摘要可以让读者了解你的研究成果&#xff0c;快速浏览并决定是否要阅读更多内容。 但研究论文中的摘要…

Python面试宝典第23题:分发糖果

题目 n 个孩子站成一排&#xff0c;给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求&#xff0c;给这些孩子分发糖果。 &#xff08;1&#xff09;每个孩子至少分配到 1 个糖果。 &#xff08;2&#xff09;相邻两个孩子评分更高的孩子会获得更多的糖果。 请…

AI绘画SD万能模型 ControlNet Union (也称ControlNet++ 或 ControlNetPlus)!10余种控制效果一键生成!

大家好&#xff0c;我是画画的小强 Controlnet 可以说是目前最重要的一款 AI 绘画控制插件&#xff0c;可以帮我们实现轮廓、深度、动作姿势、颜色等多种控制效果。由于每种控制条件都需要调用不同的控制模型&#xff0c;加上 SD1.5 和 SDXL 的生态并不互通&#xff0c;大家肯…

【ROS 最简单教程 006/300】使用 launch 启动多个 ROS 节点

使用 launch 文件&#xff0c;可以一次性启动多个 ROS 节点 launch 文件编写的语法规则参见 &#x1f449; launch 文件编写 &#x1f49c; &#x1f49c; &#x1f49c; &#x1f49c; &#x1f49c; 简单示例如下 不使用 launch 需要启动三个命令行终端窗口&#xff0c;分别…

电商电子面单API对接方法

电商业务管理过程中&#xff0c;商家想要高效发货&#xff0c;使用电子面单是必不可少的&#xff0c;因为电子面单成本低、效率高&#xff0c;所以电商ERP、打单软件等这类应用对接电商电子面单API的需求量非常大。当应用通过电商电子面单API与电商平台、快递公司系统打通后&am…

Reranker技术

文章目录 Reranker技术0. 什么是RAG1. 什么是Reranker&#xff1f;2. Reranker在RAG技术中的应用3.使用 Reranker 的优缺点4.总结参考&#xff1a;知乎 Reranker技术 0. 什么是RAG 基础 RAG 的操作流程大致如下&#xff1a;首先&#xff0c;你需要将文本切分成小段&#xff0…

《深度RAG系列》 LLM 为什么选择了RAG

2023年是AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;元年&#xff0c;这一年见证了人工智能生成内容领域的巨大飞跃&#xff0c;特别是大模型的爆发&#xff0c;它们在自然语言处理、图像生成、音频处理等多个领域展现出了惊人的能力。 这些预训练…

UVC驱动分析(一)

UVC驱动分析 UVC驱动简介Linux video框架分层UVC驱动注册UVC驱动注册入口函数UVC设备探测初始化UVC描述符解析V4L2设备注册UVC控制参数初始化UVC video驱动注册UVC 状态初始化 UVC驱动简介 UVC全称为USB Video Class&#xff0c;即&#xff1a;USB视频类&#xff0c;是一种为U…

Vue组件库移动端预览实现原理

引言 大家如果使用过移动端组件库&#xff08;比如&#xff1a;Vant&#xff09;&#xff0c;会发现在网站右侧有一个手机端的预览效果。 而且这个手机端预览的内容和外面的组件代码演示是同步的&#xff0c;切换组件的时候&#xff0c;移动端预览的内容也会发生相应的变化。 …

基于python的百度迁徙迁入、迁出数据分析(四)

这篇文章是对上篇文章的可获取数据的时间区间的修正&#xff0c;依然通过开发者模式找寻相关数据源&#xff0c;我直接把数据url贴在这里&#xff0c;可以发现里面包含了相对明面上看不到的数据包括&#xff0c;行政区id、春运迁徙数据等&#xff1a;qianxi.cdn.bcebos.com/app…

LYT-Net——轻量级网络低光照条件图像修复模型推理部署(C++/Python)

1.环境安装 conda create -n LYT_Torch python3.9 -y conda activate LYT_Torchconda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidiapip install matplotlib scikit-learn scikit-image opencv-python yacs joblib natsort h5py tqdm tensor…

Conformal low power-7.运行Conformal Low Power 1801流程

要获取有关原生1801流程的最新信息&#xff08;例如功能、指南、常见问题解答和dofile脚本&#xff09;&#xff0c;请使用SET WEB_INTERFACE ON命令启动Web界面。 左手边列出了所有的Conformal产品。还有一个名为“Sample Dofiles”的部分&#xff0c;提供了在不同场景下运行C…

第一个Python Web程序

1、离线安装Django 由于Python是3.7版本,Django选择2.2.4版本,并且中间需要安装依赖包。全部安装包如下: 打开Anaconda Prompt,先进入Python3.7环境,然后依次安装各个包: 至此,Django离线安装成功。 2、编写第一个Django程序 2.1 创建Django项目 创建项目welcome时…

C#初级——继承

继承 继承是面向对象程序设计中最重要的概念之一。继承允许我们根据一个类来定义另一个类&#xff0c;不需要完全重新编写新的数据成员和成员函数&#xff0c;只需要设计一个新的类&#xff0c;继承了已有的类的成员即可。这个已有的类被称为的基类&#xff08;父类&#xff0…

(自适应手机端)行业协会机构网站模板

(自适应手机端)行业协会机构网站模板PbootCMS内核开发的网站模板&#xff0c;该模板适用于行业协会网站等企业&#xff0c;当然其他行业也可以做&#xff0c;只需要把文字图片换成其他行业的即可&#xff1b;自适应手机端&#xff0c;同一个后台&#xff0c;数据即时同步&#…