使用Github搭建Maven私有远程仓库

Maven仓库

目录html

为了不重复造轮子,咱们能够在项目中引入依赖,使用现有的成熟解决方案。git

也许你不知足于“借”轮子,还想本身造轮子,这个时候你就能够把本身的代码放入公共的仓库,供你们使用。github

但使用公共的依赖仓库很麻烦,幸亏github为咱们提供了一种简便的你们本身的公共依赖仓库的方式。spring

GitHub

自从今年Github支持免费的我的私有仓库之后,github愈来愈成为本身平常学习、写做和开发必不可少的工具了。apache

以前由于github的私有仓库收费,不得已使用了gitee和bitbucket等工具。事实证实,这个世界,只须要一个Github。springboot

下面就一步步带你搭建一下本身的Maven公共仓库。bash

本地deploy

在本身本地建立一个目录,来放本身deploy的文件,而后在本身的项目目录下执行以下Maven命令:maven

mvn deploy -DaltDeploymentRepository=ijiangtao-net-repo::default::file:/1tool/develop/maven/repository/ijiangtao-net-repo/repository
复制代码

而后你会看到本身放本地deploy的内容目录下面已经生成好了依赖所需的全部文件。ide

这里须要特别说明的是这3个文件:工具

  • maven-metadata.xml
  • maven-metadata.xml.md5
  • maven-metadata.xml.sha1

其中md5, sha1是校验文件,它们用来保证这个metadata文件的完整性。

Maven在编绎项目时,会先尝试请求maven-metadata.xml,若是没有找到,则会尝试请求到jar文件,在下载jar文件时也会尝试下载jar的md5, sha1文件。

下面就是我本地deploy生成的文件:

maven-metadata.xml
maven-metadata.xml.md5
maven-metadata.xml.sha1
tao-util-core-1.1.01.01-20190420.080520-1.jar
tao-util-core-1.1.01.01-20190420.080520-1.jar.md5
tao-util-core-1.1.01.01-20190420.080520-1.jar.sha1
tao-util-core-1.1.01.01-20190420.080520-1.pom
tao-util-core-1.1.01.01-20190420.080520-1.pom.md5
tao-util-core-1.1.01.01-20190420.080520-1.pom.sha1
复制代码

这个maven-metadata.xml文件很重要,若是没有这个文件来指明最新的jar版本,那么即便远程仓库里的jar更新了版本,本地maven编绎时用上-U参数,也不会拉取到最新的jar。

因此并不能简单地把jar包放到github上就完事了,必定要先在本地deploy,生成maven-metadata.xml文件,并上传到github上。

上传到github

这一步比较简单,只要用过github的都没什么难度。

首先在GitHub上建立仓库,而后把本地deploy的文件所属的目录设置为git仓库,最后push到远程便可。

项目配置依赖

除了要把你的依赖坐标放到dependencies标签中以外,还须要在pom.xml中指定你的repositories的url。

<dependency>
    <groupId>net.ijiangtao.tech.util</groupId>
    <artifactId>tao-util-core</artifactId>
    <version>1.1.01.01-SNAPSHOT</version>
</dependency>
复制代码
<repositories>
	<repository>
		<!-- A unique identifier for a repository. -->
		<id>ijiangtao-net-repo</id>
		<!--Human readable name of the repository. -->
		<name>ijiangtao.net repository</name>
		<url>https://raw.githubusercontent.com/ijiangtao/ijiangtao-net-repo/master/repository</url>
		<releases>
			<enabled>true</enabled>
			<checksumPolicy>warn</checksumPolicy>
		</releases>
		<snapshots>
			<enabled>true</enabled>
			<updatePolicy>always</updatePolicy>
			<checksumPolicy>warn</checksumPolicy>
		</snapshots>
	</repository>
</repositories>
复制代码

这样你就能够下载远程仓库的依赖了。

当你执行mvn install -U的时候,会看到下面的Downloading提示:

Downloading from alimaven: http://maven.aliyun.com/nexus/content/groups/public/net/ijiangtao/tech/util/tao-util/1.1.01.01-SNAPSHOT/maven-metadata.xml
Downloading from xxxx: https://github.com/xxxx/xxxx-repo/raw/master/releases/net/ijiangtao/tech/util/tao-util/1.1.01.01-SNAPSHOT/maven-metadata.xml
Downloading from yyyy: http://yyyy.yyyy.cn/nexus/content/groups/public/net/ijiangtao/tech/util/tao-util/1.1.01.01-SNAPSHOT/maven-metadata.xml
Downloading from sonatype: https://oss.sonatype.org/content/repositories/snapshots/net/ijiangtao/tech/util/tao-util/1.1.01.01-SNAPSHOT/maven-metadata.xml
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/net/ijiangtao/tech/util/tao-util/1.1.01.01-SNAPSHOT/maven-metadata.xml
Downloading from ijiangtao-net-repo: https://raw.githubusercontent.com/ijiangtao/ijiangtao-net-repo/master/repository/net/ijiangtao/tech/util/tao-util/1.1.01.01-SNAPSHOT/maven-metadata.xml
复制代码

这是Maven在你配置的多个仓库中依次下载依赖,所以若是配置的仓库太多的话,下载速度会受到影响。

上文中提到的仓库地址和示例代码,能够访问以下两个仓库地址:

参考连接

相关文章
相关标签/搜索