利用github搭建个人maven仓库的方法步骤

yizhihongxing

下面是详细讲解如何利用GitHub搭建个人Maven仓库的步骤。

一、为什么要搭建个人Maven仓库?

在日常开发中,我们经常会使用到Maven来管理Java项目的依赖。而Maven默认会从远程的Maven仓库中查找依赖,这样会有以下问题:

  • 依赖的版本无法控制,有可能出现版本不兼容的问题;
  • 网络不稳定或远程仓库出现故障,导致依赖下载失败;
  • 公司内部需要使用某些特定版本的依赖,但是公共的Maven仓库中没有这些依赖。

因此,为了解决这些问题,我们可以在GitHub上搭建个人的Maven仓库,来管理本地或公司内部需要使用的依赖,便于控制依赖版本和依赖管理。

二、搭建个人Maven仓库的方法

1. 创建GitHub仓库

首先,需要在GitHub上创建一个新的仓库,作为我们的个人Maven仓库。比如,我们创建了一个名为my-maven-repo的仓库。

2. 下载Apache Maven

接下来,需要下载并安装Apache Maven。可在Maven官网下载最新版本的Maven,解压到本地某个路径中。

3. 配置Settings.xml文件

Maven会读取~/.m2/settings.xml文件来查找Maven配置。因此,我们需要在该文件中添加以下配置,指定我们的GitHub仓库作为Maven仓库:

<settings>
  <servers>
    <server>
      <id>github</id>
      <username>GITHUB_USERNAME</username>
      <password>GITHUB_TOKEN</password>
    </server>
  </servers>

  <profiles>
    <profile>
      <id>github</id>
      <repositories>
        <repository>
          <id>github</id>
          <url>https://maven.pkg.github.com/GITHUB_USERNAME/MY-MVN-REPO/</url>
        </repository>
      </repositories>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>github</activeProfile>
  </activeProfiles>
</settings>

其中,GITHUB_USERNAME是你的GitHub用户名,GITHUB_TOKEN需要在GitHub生成一个访问令牌(token),用于在Maven上传依赖时进行认证。

具体生成token的方法可以参考GitHub的文档

添加完成后,保存settings.xml文件。

4. 上传依赖到GitHub仓库

接下来,需要将本地的依赖上传到GitHub仓库中。以上传my-demo项目的依赖为例,可以在该项目的pom.xml文件中添加以下配置:

<distributionManagement>
  <repository>
    <id>github</id>
    <name>GitHub my-maven-repo Package</name>
    <url>https://maven.pkg.github.com/GITHUB_USERNAME/MY-MVN-REPO/</url>
  </repository>
</distributionManagement>

然后,在命令行中执行以下命令,将项目打包并上传到GitHub仓库中:

mvn clean package
mvn deploy

执行成功后,依赖就会上传到GitHub仓库的packages中。

5. 使用GitHub仓库中的依赖

最后,我们就可以在其他项目的pom.xml文件中添加以下依赖,来使用刚上传的依赖了:

<repositories>
  <repository>
    <id>github</id>
    <name>GitHub my-maven-repo</name>
    <url>https://maven.pkg.github.com/GITHUB_USERNAME/MY-MVN-REPO/</url>
  </repository>
</repositories>

<dependencies>
  <dependency>
    <groupId>com.example</groupId>
    <artifactId>my-demo</artifactId>
    <version>1.0.0</version>
  </dependency>
</dependencies>

其中,com.example:my-demo:1.0.0就是刚上传的项目的依赖。在<repositories>中添加GitHub仓库的信息,在<dependencies>中引入依赖即可使用。

三、示例说明

示例一:上传本地项目依赖到GitHub仓库

以下示例以Spring Boot项目为例,演示如何上传本地项目依赖到GitHub仓库中。

  1. 在GitHub上创建一个名为my-boot-repo的仓库,用来作为Maven仓库。

  2. 将Spring Boot项目的pom.xml文件中的以下配置修改为:

xml
<distributionManagement>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/GITHUB_USERNAME/my-boot-repo/</url>
</repository>
</distributionManagement>

其中,GITHUB_USERNAME为你的GitHub用户名。

  1. 在项目根目录下执行以下命令,将项目打包并上传至GitHub仓库:

shell
mvn clean package
mvn deploy

  1. 上传成功后,就可以在其他项目的pom.xml文件中添加以下依赖:

```xml


github
GitHub my-boot-repo
https://maven.pkg.github.com/GITHUB_USERNAME/my-boot-repo/



com.example
my-boot-app
1.0.0


```

其中,com.example:my-boot-app:1.0.0即为刚上传的Spring Boot项目的依赖。在<repositories>中添加GitHub仓库信息,在<dependencies>中引入依赖即可使用。

示例二:上传第三方依赖到GitHub仓库

以下示例以Jedis库为例,演示如何上传第三方依赖到GitHub仓库中。

  1. 在GitHub上创建一个名为my-libs-repo的仓库,用来作为Maven仓库。

  2. 修改项目的pom.xml文件,添加以下配置:

xml
<repositories>
<repository>
<id>github</id>
<name>GitHub my-libs-repo</name>
<url>https://maven.pkg.github.com/GITHUB_USERNAME/my-libs-repo/</url>
</repository>
</repositories>

其中,GITHUB_USERNAME为你的GitHub用户名。

  1. 添加以下<dependency>元素到项目的pom.xml文件中:

xml
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.0</version>
</dependency>

  1. 在命令行中执行以下命令,将Jedis依赖上传至GitHub仓库:

shell
mvn deploy:deploy-file \
-DgroupId=redis.clients \
-DartifactId=jedis \
-Dversion=3.6.0 \
-Dpackaging=jar \
-Dfile=jedis-3.6.0.jar \
-DrepositoryId=github \
-Durl=https://maven.pkg.github.com/GITHUB_USERNAME/my-libs-repo/

其中,jedis-3.6.0.jar为本地待上传的jar包名称,GITHUB_USERNAME为你的GitHub用户名。执行成功后,Jedis依赖就会上传至GitHub仓库中。

  1. 在其他项目的pom.xml文件中添加以下依赖:

```xml


github
GitHub my-libs-repo
https://maven.pkg.github.com/GITHUB_USERNAME/my-libs-repo/



redis.clients
jedis
3.6.0


```

其中,redis.clients:jedis:3.6.0即为刚上传的Jedis依赖。在<repositories>中添加GitHub仓库信息,在<dependencies>中引入依赖即可使用。

四、总结

通过以上步骤,我们就可以在GitHub上搭建个人的Maven仓库,来管理本地或公司内部需要使用的依赖,便于控制依赖版本和依赖管理。同时也可以发布自己编写的开源项目到maven central仓库,供广大开发者使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用github搭建个人maven仓库的方法步骤 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • SpringBoot之HandlerInterceptor拦截器的使用详解

    下面我将为你详细讲解“SpringBoot之HandlerInterceptor拦截器的使用详解”的完整攻略。 一、HandlerInterceptor简介 HandlerInterceptor 是 SpringMVC 拦截器,主要作用是拦截请求并获取请求相关的信息,对请求进行拦截和处理,对响应进行后处理和响应处理。 既然是一个拦截器,那必然就是针对请求进行…

    GitHub 2023年5月16日
    00
  • WordPress自动更新漏洞:超1/4网站可被黑客一举击溃

    WordPress自动更新漏洞攻击流程 最近,网络安全公司Wordfence的研究人员发现了WordPress自动更新漏洞,该漏洞可被攻击者利用,通过一个错误的站点配置,将攻击者的Web应用程序替换为WordPress。 影响范围 据Wordfence的报告显示,在WordPress网站中,超过25%的站点都存在这个漏洞。这意味着有大量的网站易受攻击: 打开…

    GitHub 2023年5月16日
    00
  • 使用next.js开发网址缩短服务的方法

    下面就来详述一下使用Next.js开发网址缩短服务的完整攻略。 1. 准备工作 在开始Next.js开发之前,我们需要先安装好Node.js,以及npm包管理工具。具体安装方法可以通过官网进行了解。 2. 创建Next.js应用程序 使用以下命令创建一个新的Next.js应用程序: npx create-next-app url-shortener 即可在当…

    GitHub 2023年5月16日
    00
  • 将来会是Python、Java、Golang三足鼎立的局面吗

    将来Python、Java、Golang三种语言并存并不是不可能的,但是这需要从多个角度进行分析和预测才能得出结论。 确定趋势 首先需确定未来编程语言发展的趋势。未来编程语言的趋势与硬件、软件和市场需求紧密相关。我们可以从以下几个方面探讨: 硬件的发展 未来计算机的发展趋势是:低功耗、高效率、高并发、优惠易用、物联网普及、云计算和边缘计算兴起等。这些都要求语…

    GitHub 2023年5月16日
    00
  • go mod的使用方法小结

    下面我就来详细讲解一下“go mod的使用方法小结”的完整攻略,以及两条示例说明。 什么是go mod 在Go1.11版本中引入的go mod,是一个用于管理依赖项的工具。它可以将应用程序的依赖项转化为模块,并下载它们的代码。Go mod 还具有版本控制的功能,可以确保在编译代码时使用的依赖项版本是稳定的。使用 go mod 可以方便地解决 Go 语言依赖管…

    GitHub 2023年5月16日
    00
  • Mockito mock Kotlin Object类方法报错解决方法

    Mockito mock Kotlin Object类方法报错解决方法主要是解决在Kotlin编写的程序中使用Mockito进行测试时,对一个Kotlin的Object类的方法进行Mock时报错的问题。以下是完整攻略: 问题描述 在Kotlin编写的程序中,有一个Object类,比如: object MyObject { fun doSomething():…

    GitHub 2023年5月16日
    00
  • go module使用本地包的方法示例

    下面给出使用本地包的方法示例的完整攻略。 使用本地包 在Go的包管理中,依赖的第三方库一般是通过指定包的导入路径获取的,而本地包则需要使用相对或绝对路径进行引用。 示例一:使用相对路径引用本地包 当在项目中引用其他自己写的包时,可以使用相对路径引用本地包。例如,假设你的项目文件布局如下: project/ main.go utils/ utils.go 其中…

    GitHub 2023年5月16日
    00
  • 使用 JavaScript Promise 读取 Github 用户数据

    下面是使用 JavaScript Promise 读取 Github 用户数据的完整攻略。 前置知识 在学习 Promise 之前,需要先熟悉 JavaScript 中的回调函数和异步编程。如果还不了解,可以先学习一下。 Promise 简介 Promise 是 ES6 中新增的一种解决异步编程问题的方法。Promise 可以让异步代码看起来像同步代码,并且…

    GitHub 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部