使用 Github 搭建 maven 私服

新馬衝老龍壩發表於2021-07-01

「本文已參與好文召集令活動,點選檢視:後端、大前端雙賽道投稿,2萬元獎池等你挑戰!

前言

每次新建專案時都是從之前的專案中複製貼上高頻使用的程式碼?搭建專案架構時,複製各個老專案中的工具類和配置類?本文將在很大程度上讓你避免使用爛大街的武技—CV大法。

本篇文章最主要的目的就是保證整個流程的順利完成,所以文章中用到的示例都是最簡單的;其實搭建maven私服還是有很多細節性東西的,但是那些東西放到下篇文章來說吧!下篇文章我自己還是期待的,因為有一個很有意思的知識點。

搭建maven倉庫

1、登入github賬戶並如下圖所示建立一個用於儲存maven專案的倉庫,取名為 maven-test,其中許可權要設定為 public ,否則後面無法引入依賴。

Untitled.png

最好在建立時勾選“Add a README file”,原因是不勾選時無法獲取倉庫地址(可以頭鐵自己測試一下)。建立完成後,我獲得的倉庫地址是

[git@github.com](mailto:git@github.com):xinmachong/maven-test.git
複製程式碼

該地址在後面(釋出專案)會用到。

新建maven專案

有了程式碼提交的倉庫,接下來就是敲程式碼了。

使用IDEA建立一個maven專案,由於我習慣性給前端的介面響應結構是:

{
		"code":200,
		"msg":"success",
		"data":"anything struct"
}
複製程式碼

所以我在專案中建立了我日常專案中常用的響應體,其目的就是:以後新建任意專案我都不用重複寫這一塊程式碼了。

Untitled.png

本篇文章最主要的目的就是保證整個流程的順利完成,前面已經說過了,所以現在我的這個maven專案的東西就只有這麼一點。接下來就是釋出專案了。

釋出專案

利用git初始化本地倉庫,新增遠端git倉庫地址(即前文獲得的倉庫地址)

首先在任意位置新建一個資料夾,例如我的就是 G:\GitHub\maven-test;然後使用git執行如下命令:

git init
git remote add origin [git@github.com](mailto:git@github.com):xinmachong/maven-test.git
複製程式碼

再利用mvn deploy將artifects釋出至剛剛建立的git本地倉庫中

mvn deploy -DaltDeploymentRepository=${distribute_id}::default::file:${git_repo_path}
複製程式碼

Untitled.png

其中,{distribute_id}對應pom檔案中distributionManagement/repository/id 處需要填寫的內容,可隨意填寫,但是此處需要和文章後面使用的 id 一致。${git_repo_path}對應的是本地倉庫地址G:\GitHub\maven-test。

此時開啟本地倉庫可以看到兩個資料夾.git和自己命名的packag—com。如下圖所示:

Untitled.png

將需要釋出對應版本的artifects提交至本地git倉庫中,然後push至對應的分支master

git add com/*
git commit -m "deploy maven-test"
git push origin master
複製程式碼

如果釋出成功,可以在github上看到提交的內容如下所示:

Untitled.png

引入依賴並測試

所有的操作已經完成,接下來就是驗證成果了。新建一個spring boot專案,在pom.xml中新增個人倉庫,其中就是前文的${distribute_id}對應的xinmachong

<repositories>
    <repository>
        <id>xinmachong</id>
        <url>https://raw.github.com/xinmachong/maven-test/master</url>
    </repository>
</repositories>
複製程式碼

再引入依賴

<dependencies>
    <dependency>
        <groupId>com.xinmachong</groupId>
        <artifactId>maven-test</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>
複製程式碼

此處的相關資訊都可以在 maven-metadata.xml中找到,如下圖所示:

Untitled.png

最後在控制層寫一個測試介面

Untitled.png

從上圖可以看到,我並未在專案中建立物件ApiResponse,但是可以直接new。從import com.xinmachong.response.ApiResponse;中可以看到,剛剛的maven專案中的物件被我們成功呼叫了。以後所有的新專案都不用重複造介面響應體的輪子了,只要引入自己的依賴就可以了。

我就想問一下,屌不屌?

好吧,我就是認真的開個玩笑。由於我使用的示例非常簡單,所以會掩蓋搭建自己maven倉庫的過程中的很多疑難點,假如現在我們每個專案都要使用JWT,所以自然而然的想進一步打包JWT的功能,但是JWT中的簽名和有效期是寫在配置檔案中的,而且JWT會攔截所有未放行的介面做token驗證,所以我就想問以下兩個問題:

1、想和 JDBC 連線 MySQL 資料庫一樣自己配置使用者名稱和密碼一樣,配置 JWT 的有效期和簽名如何做?直接在maven專案中寫個@Value(‘$某個屬性’),然後新建的 spring boot 專案幫你自動注入到依賴包中?頭鐵的可以試試,反正我的一頭包還沒消腫呢。

2、攔截器寫完打包後,如何在新專案中自動生效?在maven專案中寫好,釋出到github,引入依賴時就可以自動攔截?如此簡單粗暴肯定行不通的,頭鐵的可以試試。

真正的解決方式看下一篇文章吧。。。

相關文章