「本文已參與好文召集令活動,點選檢視:後端、大前端雙賽道投稿,2萬元獎池等你挑戰!」
前言
每次新建專案時都是從之前的專案中複製貼上高頻使用的程式碼?搭建專案架構時,複製各個老專案中的工具類和配置類?本文將在很大程度上讓你避免使用爛大街的武技—CV大法。
本篇文章最主要的目的就是保證整個流程的順利完成,所以文章中用到的示例都是最簡單的;其實搭建maven私服還是有很多細節性東西的,但是那些東西放到下篇文章來說吧!下篇文章我自己還是期待的,因為有一個很有意思的知識點。
搭建maven倉庫
1、登入github賬戶並如下圖所示建立一個用於儲存maven專案的倉庫,取名為 maven-test,其中許可權要設定為 public ,否則後面無法引入依賴。
最好在建立時勾選“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"
}
複製程式碼
所以我在專案中建立了我日常專案中常用的響應體,其目的就是:以後新建任意專案我都不用重複寫這一塊程式碼了。
本篇文章最主要的目的就是保證整個流程的順利完成,前面已經說過了,所以現在我的這個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}
複製程式碼
其中,{distribute_id}對應pom檔案中distributionManagement/repository/id 處需要填寫的內容,可隨意填寫,但是此處需要和文章後面使用的 id 一致。${git_repo_path}對應的是本地倉庫地址G:\GitHub\maven-test。
此時開啟本地倉庫可以看到兩個資料夾.git和自己命名的packag—com。如下圖所示:
將需要釋出對應版本的artifects提交至本地git倉庫中,然後push至對應的分支master
git add com/*
git commit -m "deploy maven-test"
git push origin master
複製程式碼
如果釋出成功,可以在github上看到提交的內容如下所示:
引入依賴並測試
所有的操作已經完成,接下來就是驗證成果了。新建一個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中找到,如下圖所示:
最後在控制層寫一個測試介面
從上圖可以看到,我並未在專案中建立物件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,引入依賴時就可以自動攔截?如此簡單粗暴肯定行不通的,頭鐵的可以試試。
真正的解決方式看下一篇文章吧。。。