目錄html
爲了不重複造輪子,咱們能夠在項目中引入依賴,使用現有的成熟解決方案。git
也許你不知足於「借」輪子,還想本身造輪子,這個時候你就能夠把本身的代碼放入公共的倉庫,供你們使用。github
但使用公共的依賴倉庫很麻煩,幸虧github爲咱們提供了一種簡便的你們本身的公共依賴倉庫的方式。spring
自從今年Github支持免費的我的私有倉庫之後,github愈來愈成爲本身平常學習、寫做和開發必不可少的工具了。apache
以前由於github的私有倉庫收費,不得已使用了gitee和bitbucket等工具。事實證實,這個世界,只須要一個Github。springboot
下面就一步步帶你搭建一下本身的Maven公共倉庫。bash
在本身本地建立一個目錄,來放本身deploy的文件,而後在本身的項目目錄下執行以下Maven命令:maven
mvn deploy -DaltDeploymentRepository=ijiangtao-net-repo::default::file:/1tool/develop/maven/repository/ijiangtao-net-repo/repository
複製代碼
而後你會看到本身放本地deploy的內容目錄下面已經生成好了依賴所需的全部文件。ide
這裏須要特別說明的是這3個文件:工具
其中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上建立倉庫,而後把本地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在你配置的多個倉庫中依次下載依賴,所以若是配置的倉庫太多的話,下載速度會受到影響。
上文中提到的倉庫地址和示例代碼,能夠訪問以下兩個倉庫地址: