基于Github搭建Maven倉庫的方法

Maven 是一個項目管理和構(gòu)建自動化工具, Maven倉庫 是用于存放不同編譯的artifacts和dependencies(依賴)的模塊集合。嚴格而言,主要有兩類倉庫: local(本地) 和 remote(遠端) 。

本地倉庫存放本地安裝的來自遠端倉庫的模塊,可看作遠端模塊在本地的一份緩存,同時也包含本地編譯尚未發(fā)布的模塊。遠端倉庫指任何類型的倉庫,能夠通過許多不同的協(xié)議訪問,如file://和http://,可以是“真正的”類似repo.maven.org由第三方提供的遠程倉庫用于提供公開模塊下載,也可用于團隊內(nèi)部基于文件或者http服務(wù)器分享私有模塊。

不論本地還是遠端倉庫都是滿足相同的結(jié)構(gòu)規(guī)則,因此遠端模塊很容易共享到任何地方,也可以同步到本地以離線環(huán)境下使用。一般而言這些倉庫的構(gòu)造對于maven用戶是完全透明的。

一般而言,業(yè)界已經(jīng)有許多成熟的maven倉庫解決方案,如Nexus等,只需擁有一臺服務(wù)器,并下載并安裝maven倉庫服務(wù)軟件,然后啟動即可。但對于個人開發(fā)者而言,若需要搭建用于分享和發(fā)布個人開發(fā)artifacts的公開maven倉庫,選擇之一自然是購買一臺vps服務(wù)器,然后安裝maven倉庫服務(wù)軟件,然而另外一種完全免費的選擇則是完全基于github實現(xiàn),本文將為您詳細介紹后一種更為極客的實踐方案。其原理是利用github的git push來發(fā)布artifects,利用github提供的公開raw服務(wù)提供對外下載服務(wù)。當向開源社區(qū)共享自己開發(fā)的artifects時,只需要提供模塊pom信息和個人獨一無二的倉庫地址即可:

https://raw.github.com/${github_account}/maven/snapshot/
https://raw.github.com/${github_account}/maven/release/

準備

申請Github帳號并配置ssh public key: http://github.com
安裝Git工具: http://git-scm.com
安裝Maven工具: http://maven.apache.org

搭建過程

  1. 利用github網(wǎng)站中創(chuàng)建一個新的倉庫,記下倉庫地址:
    git@github.com:${github_account}/maven.git
  2. 進入 ${HOME}/.m2/repository/,初始化git本地倉庫,添加員段地址。
$ cd ~/.m2/repository
$ git init
$ git remote add origin git@github.com:hchen9/maven.git
  1. 創(chuàng)建.gitignore 將文件匹配符*加入其中, 并將.gitignore提交git本地倉庫master分支
$ echo "*" >> .gitignore
$ git add .gitgnore
$ git commit -m 'add .gitignore by ignoring all'
  1. 分別創(chuàng)建分支snapshot與release并push至遠端倉庫,用于發(fā)布不同狀態(tài)的artifects,默認情況切換至snapshot
$ git branch snapshot
$ git branch release
$ git push origin snapshot
$ git push origin release
$ git checkout snapshot
  1. 當開發(fā)完成發(fā)布新的artifects(例如com.github.${github_account}:${artifactId}:${version})時,首先利用mvn install 將artifects安裝至本地maven倉庫中 ~/.m2/repositor
$ cd ${project_root}
$ mvn install

然后,將需要發(fā)布對應(yīng)版本的artifects所聞提交至本地git倉庫中,然后push至對應(yīng)的分支snapshot 或 release.

$ cd ~/.m2/repository
$ git add -f com/github/${github_account}/${artifactId}/${version}
$ git commit -m 'snapshot of com.github.${github_account}:${artifactId}:${version}'
$ git push origin snapshot
  1. 在pom.xml中使用maven artifact添加以下配置:
<project>
<!--Add repositories-->
    <repositories>
        <repository>
            <id>haoch-maven-snapshot-repository</id>
            <name>haoch-maven-snapshot-repository</name>
            <url>https://raw.github.com/${github_account}/maven/snapshot/</url>
        </repository>
        <repository>
            <id>haoch-maven-release-repository</id>
            <name>haoch-maven-release-repository</name>
            <url>https://raw.github.com/${github_account}/maven/release/</url>
        </repository>
    </repositories>
<!-- Add dependencies -->
    <dependencies>
        <dependency>
            <artifactId>${artifactId}</artifactId>
            <groupId>com.github.${github_account}</groupId>
            <version>${version}</version>
        </dependency>
    </dependencies>
</project>

總結(jié)

Github 目前為止也許是最好的代碼托管服務(wù)和社交編程平臺,擁有非常好的開源分享文化,在這里分享可復(fù)用的maven artifact自然也是最佳選擇。

Git原生提供的強大版本控制能力,在日常開發(fā)中必不可少,加上Github免費的git repository的靜態(tài)raw訪問服務(wù),Github作為maven remote repository可以和日常開發(fā)工作有效的融合。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • |-1-更新內(nèi)容[6.從倉庫解析依賴的機制(重要)] 1Maven倉庫作用 倉庫用來存儲所有項目使用到構(gòu)件,在ma...
    zlcook閱讀 6,141評論 0 25
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,545評論 2 45
  • 我坐在窗前,呆呆地望著夜空 想你的剎那一刻 我笑了,傻傻的像個孩子
    LYL思海閱讀 112評論 0 0
  • 曾想做一位浪跡天涯的詩人,持一卷書,倚一窗幽竹,看遍悠然古道,留下磨滅過得足跡,踏破默默紅塵,尋找一抹詩意...
    殤雪閱讀 195評論 0 1