使用Github搭建Maven私有遠端倉庫

lijiangtao發表於2019-04-20

Maven倉庫

目錄

為了避免重複造輪子,我們可以在專案中引入依賴,使用現有的成熟解決方案。

也許你不滿足於“借”輪子,還想自己造輪子,這個時候你就可以把自己的程式碼放入公共的倉庫,供大家使用。

但使用公共的依賴倉庫很麻煩,幸好github為我們提供了一種簡便的大家自己的公共依賴倉庫的方式。

GitHub

自從今年Github支援免費的個人私有倉庫以後,github越來越成為自己日常學習、寫作和開發必不可少的工具了。

之前因為github的私有倉庫收費,不得已使用了gitee和bitbucket等工具。事實證明,這個世界,只需要一個Github。

下面就一步步帶你搭建一下自己的Maven公共倉庫。

本地deploy

在自己本地建立一個目錄,來放自己deploy的檔案,然後在自己的專案目錄下執行如下Maven命令:

mvn deploy -DaltDeploymentRepository=ijiangtao-net-repo::default::file:/1tool/develop/maven/repository/ijiangtao-net-repo/repository
複製程式碼

然後你會看到自己放本地deploy的內容目錄下面已經生成好了依賴所需的所有檔案。

這裡需要特別說明的是這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在你配置的多個倉庫中依次下載依賴,因此如果配置的倉庫太多的話,下載速度會受到影響。

上文中提到的倉庫地址和示例程式碼,可以訪問如下兩個倉庫地址:

參考連結

相關文章