如何藉助GitHub搭建屬於自己的maven倉庫

一灰灰發表於2018-02-12

藉助GitHub搭建屬於自己的maven倉庫

I. 背景

在Github上也寫了不少的專案了,然後經常遇到的一個問題就是,很多自己寫的專案,希望在另外一個專案中使用時,只能把這個專案下載下來,相當之不方便

因為大多數的java後端專案都是基於maven管理依賴的,所以就希望能有一個公共的maven倉庫,可以把自己的專案扔進去,然後再應用就方便很多了

基於此,就有了本文這個教程了

II. 實現步驟

1. github倉庫建立

新建一個repository的前提是有github帳號,預設看到本文的是有帳號的

首先是在github上新建一個倉庫,命令隨意,如我新建專案為

2. 配置本地倉庫

本地指定一個目錄,新建資料夾 maven-repository, 如我的本地配置如下

## 進入目錄
cd /Users/yihui/GitHub

## 新建目錄
mkdir maven-repository; cd maven-repository

## 新建repository目錄
# 這個目錄下面就是存放我們deploy的專案相關資訊
# 也就是說我們專案deploy指定的目錄,就是這裡
mkdir repository

## 新增一個readme文件
# 保持良好的習慣,每個專案都有一個說明文件
touch README.md
複製程式碼

這個目錄結構為什麼是這樣的?

我們直接看maven配置中預設的目錄結構,同樣拷貝一份出來而已

3. 倉庫關聯

將本地的倉庫和遠端的github倉庫關聯起來,執行的命令也比較簡單了

git add .
git commit -m 'first comit'
git remote add origin https://github.com/liuyueyi/maven-repository.git
git push -u origin master
複製程式碼

接著就是進行分支管理了

  • 約定將專案中的snapshot版,deploy到倉庫的 snapshot分支上
  • 約定將專案中的release版,deploy到倉庫的 release分支上
  • master分支管理所有的版本

所以需要新建立兩個分支

## 建立snapshot分支
git checkout -b snapshot 
git push origin snapshot
# 也可以使用 git branch snapshot , 我通常用上面哪個,建立並切換分支

## 建立release分支
git checkout -b release
git push origin release
複製程式碼

4. 專案deploy

專案的deploy,就需要主動的指定一下deploy的地址了,所以我們的deploy命令如下

## deploy專案到本地倉庫
mvn clean deploy -Dmaven.test.skip  -DaltDeploymentRepository=self-mvn-repo::default::file:/Users/yihui/GitHub/maven-repository/repository
複製程式碼

上面的命令就比較常見了,主要需要注意的是file後面的引數,根據自己前面設定的本地倉庫目錄來進行替換

5. deploy指令碼

每次進行上面一大串的命令,不太好記,特別是不同的版本deploy到不同的分支上,主動去切換分支並上傳,也挺麻煩,所以就有必要寫一個deploy的指令碼了

由於shell實在是不太會寫,所以下面的指令碼只能以湊合能用來說了

#!/bin/bash

if [ $# != 1 ];then
  echo 'deploy argument [snapshot(s for short) | release(r for short) ] needed!'
  exit 0
fi

## deploy引數,snapshot 表示快照包,簡寫為s, release表示正式包,簡寫為r
arg=$1

DEPLOY_PATH=/Users/yihui/GitHub/maven-repository/
CURRENT_PATH=`pwd`

deployFunc(){
  br=$1
  ## 快照包釋出
  cd $DEPLOY_PATH
  ## 切換對應分支
  git checkout $br
  cd $CURRENT_PATH
  # 開始deploy
  mvn clean deploy -Dmaven.test.skip  -DaltDeploymentRepository=self-mvn-repo::default::file:/Users/yihui/GitHub/maven-repository/repository

  # deploy 完成,提交
  cd $DEPLOY_PATH
  git add -am 'deploy'
  git push origin $br

  # 合併master分支
  git checkout master
  git merge $br
  git commit -am 'merge'
  git push origin master
  cd $CURRENT_PATH
}

if [ $arg = 'snapshot' ] || [ $arg = 's' ];then
  ## 快照包釋出
  deployFunc snapshot
elif [ $arg = 'release' ] || [ $arg = 'r' ];then
  ## 正式包釋出
  deployFunc release
else
  echo 'argument should be snapshot(s for short) or release(r for short). like: `sh deploy.sh snapshot` or `sh deploy.sh s`'
fi
複製程式碼

將上面的指令碼,考本到專案的根目錄下,然後執行

chmod +x deploy.sh

## 釋出快照包
./deploy.sh s
# sh deploy.sh snapshot 也可以

## 釋出正式包
./deploy.sh r
複製程式碼

基於此,整個步驟完成

III. 使用

上面倉庫的基本搭建算是ok了,然後就是使用了,maven的pom檔案應該怎麼配置呢?

首先是新增倉庫地址

新增倉庫

如果要區分snapshot和release的話,如下配置

<repositories>
    <repository>
        <id>yihui-maven-repo-snap</id>
        <url>https://raw.githubusercontent.com/liuyueyi/maven-repository/snapshot/repository</url>
    </repository>
    <repository>
        <id>yihui-maven-repo-release</id>
        <url>https://raw.githubusercontent.com/liuyueyi/maven-repository/release/repository</url>
    </repository>
</repositories>
複製程式碼

如果不care的話,直接新增下面的即可

<repositories>
    <repository>
        <id>yihui-maven-repo</id>
        <url>https://raw.githubusercontent.com/liuyueyi/maven-repository/master/repository</url>
    </repository>
</repositories>
複製程式碼

倉庫配置完畢之後,直接引入依賴即可,如依賴我的Quick-Alarm包,就可以新增下面的依賴配置

<dependency>
  <groupId>com.hust.hui.alarm</groupId>
  <artifactId>core</artifactId>
  <version>0.1</version>
</dependency>
複製程式碼

IV. 其他

個人部落格: Z+|blog

基於hexo + github pages搭建的個人部落格,記錄所有學習和工作中的博文,歡迎大家前去逛逛

宣告

盡信書則不如,已上內容,純屬一家之言,因本人能力一般,見識有限,如發現bug或者有更好的建議,隨時歡迎批評指正,我的微博地址: 小灰灰Blog

掃描關注

QrCode

相關文章