Java中如何快速構建項目腳手架的實現
1 前言
項目中,目前主流的當然是微服務項目。為瞭應對高並發,以及保證自己的服務比較穩定,通常會把服務按照模塊,或者具體的業務劃分為多個獨立的微服務
,那麼如果一個一個去創建每一個微服務項目,感覺在做重復的事情,而且容易出錯,所以筆者就自己搞瞭一個通用的腳手架,在此基礎上修修補補,大大提高瞭工作項目。
2 微服務項目準備
在進行腳手架構建之前,肯定需要有一套自己的或者公司統一的微服務項目規范
,比如說依賴管理、項目的包結構等等,然後基於這些規范寫一個空的微服務項目出來,基於這個來生成項目腳手架模板
。每個公司的項目名稱、包名稱,都有自己公司的標準,所以結構都不相同,這裡項目源碼就忽略瞭,可以給大傢分享一下目前大致的目錄結構,大致如下:
每個模塊大致功能介紹:
模塊名 | 描述 |
---|---|
smilehappiness-api | 用來存放自己服務內的feign服務,可以用來給另一個項目強引用 |
smilehappiness-api-entity | 該模塊,是為瞭兼容強依賴,而做的妥協,不建議使用強依賴 |
smilehappiness-common | 用來做一些通用的配置、攔截或者過濾器等等 |
smilehappiness-dao | 持久層處理的代碼,可以放到這個目錄下 |
smilehappiness-integrate | 用來存放外部項目的feign調用client,也可以做一些核心的插件集成 |
smilehappiness-job | 該模塊用來實現xxl-job或者其他任務調度功能 |
smilehappiness-model | 用來存放核心的model類,一般是與數據庫對應的實體類 |
smilehappiness-msg | 用來處理消息功能,可以使短信、郵件或者是mq消息 |
smilehappiness-service | 核心業務處理 |
smilehappiness-test | 測試用例模塊 |
smilehappiness-web | 對外提供action層的restful接口,可以讓外部直接通過http方式訪問 |
smilehappiness-start | 項目啟動模塊 |
3 腳手架構建
在第二步創建一個spring-boot的maven項目後,就可以開始構建腳手架瞭
3.1 項目正常啟動 && 測試用例正常
spring-boot的maven項目創建好之後,要保證項目能夠正常運行
起來,並且能夠通過http訪問
,以及正常進行單元測試
,確保項目基本沒有問題後,將項目中的.class
、.setting
、.project
無關的文件刪除
3.2 在項目的根pom中加入以下maven插件配置
<!-- 插件 --> <build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-archetype-plugin</artifactId> <version>3.1.2</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> </plugin> </plugins> </build>
3.3 執行archetype插件
在idea中,打開自己創建的微服務模板項目,右側maven中,plugins展開,然後雙擊執行archetype:create-from-project
命令,如下圖所示:
在控制臺中顯示BUILD SUCCESS
說明構建成功,同時需要把文件存放的路徑記錄下來,筆者生成的路徑如下:Archetype project created in D:\smilehappiness-project-template\target\generated-sources\archetype
3.4 執行安裝命令
到3.3步驟生成的Archetype project created in D:\smilehappiness-project-template\target\generated-sources\archetype
目錄中,依次執行以下兩個命令:
命令一 mvn clean install
出現BUILD SUCCESS
之後,就可以在本地maven倉庫的根目錄中看到一個archetype-catalog.xml文件(註:如果重復操作可能需要把改文件刪除,否則會出現delete fail錯誤),打開該文件,可以看到如下內容:
<?xml version="1.0" encoding="UTF-8"?> <archetype-catalog xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd" xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <archetypes> <archetype> <groupId>com.smilehappiness</groupId> <artifactId>smilehappiness-project-template-archetype</artifactId> <version>1.0.0-RELEASE</version> <description>project-template</description> </archetype> </archetypes> </archetype-catalog>
命令二 mvn archetype:crawl
關於該命令,簡單介紹如下:
Full name:
org.apache.maven.plugins:maven-archetype-plugin:3.2.1:crawlDescription:
Crawl a Maven repository (filesystem, not HTTP) and creates a catalog file.
mvn archetype:crawl執行過程如下:
最後生成的archetype-resource內容如下:
3.5 將smilehappiness-project-template deploy到私服
登錄到nexus私服,將template deploy上傳到私服:
4 基於腳手架生成新的項目
以下演示基於IDEA操作,具體如下
4.1 添加腳手架
在idea中引入腳手架,點擊菜單File-> new -> Project,選擇maven,勾選Create from archetype
,點擊 Add Archetype
按鈕,填寫groupId
、artifactId
以及version信息(就是archetype-catalog.xml
文件中的信息),點擊OK,示例如下:
註:有可能會遇到一些問題,腳手架生成瞭,私服倉庫也有,但是自己創建的時候就是不顯示,解決辦法:
在C:\Users\26310\AppData\Local\JetBrains\IntelliJIdea2021.2\Maven\Indices
這個目錄(根據自己實際目錄進行調整)下面自己新建一個UserArchetypes.xml,填寫如下內容:
<archetypes> <archetype groupId="com.smilehappiness" artifactId="smilehappiness-project-template-archetype" version="1.0.0-RELEASE" /> </archetypes>
使用自定義的archetype:
4.2 創建新項目
點擊next,進入new project界面,填寫項目名稱、項目位置、groupId、artifactId、version,然後點擊確定,此時基於腳手架生成的項目,即創建完畢,示例如下:
創建後的生成的項目結構如下:
4.3 命令行基於腳手架生成新的項目
如果4.1步驟,操作失敗瞭,可以使用命令行來生成腳手架,具體操作步驟如下:
第一步,輸入命令:mvn archetype:generate
第二步,選擇指定的的archetype,輸入對應的碼值即可
第三步:輸入對應的groupId、artifactId、version等,然後輸入y確認,即可生成
Define value for property 'groupId': com.smilehappiness Define value for property 'artifactId': smile-user-test Define value for property 'version' 1.0-SNAPSHOT: : 1.0.0-RELEASE Define value for property 'package' com.smilehappiness: : com.smilehappiness.smile Confirm properties configuration: groupId: com.smilehappiness artifactId: smile-user-test version: 1.0.0-RELEASE package: com.smilehappiness.smile Y: : y [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Archetype: smilehappiness-project-template-archetype:1.0.0-RELEASE [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: com.smilehappiness [INFO] Parameter: artifactId, Value: smile-user-test [INFO] Parameter: version, Value: 1.0.0-RELEASE [INFO] Parameter: package, Value: com.smilehappiness.smile [INFO] Parameter: packageInPathFormat, Value: com/smilehappiness/smile [INFO] Parameter: package, Value: com.smilehappiness.smile [INFO] Parameter: version, Value: 1.0.0-RELEASE [INFO] Parameter: groupId, Value: com.smilehappiness [INFO] Parameter: artifactId, Value: smile-user-test [WARNING] Don't override file D:\smile-user-test\.idea\inspectionProfiles\Project_Default.xml [INFO] Parent element not overwritten in D:\smile-user-test\smilehappiness-api\pom.xml [INFO] Parent element not overwritten in D:\smile-user-test\smilehappiness-api-entity\pom.xml [INFO] Parent element not overwritten in D:\smile-user-test\smilehappiness-common\pom.xml [INFO] Parent element not overwritten in D:\smile-user-test\smilehappiness-dao\pom.xml [INFO] Parent element not overwritten in D:\smile-user-test\smilehappiness-integrate\pom.xml [INFO] Parent element not overwritten in D:\smile-user-test\smilehappiness-job\pom.xml [INFO] Parent element not overwritten in D:\smile-user-test\smilehappiness-model\pom.xml [INFO] Parent element not overwritten in D:\smile-user-test\smilehappiness-msg\pom.xml [INFO] Parent element not overwritten in D:\smile-user-test\smilehappiness-service\pom.xml [INFO] Parent element not overwritten in D:\smile-user-test\smilehappiness-web\pom.xml [INFO] Parent element not overwritten in D:\smile-user-test\smilehappiness-start\pom.xml [INFO] Project created from Archetype in dir: D:\smile-user-test [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:20 min [INFO] Finished at: 2022-05-29T20:39:06+08:00 [INFO] ------------------------------------------------------------------------
註:
模板腳手架中,隻有包下面有文件的才會生成,而空包不會生成
參考資料:https://www.bbsmax.com/A/8Bz8N1Zo5x/
到此這篇關於Java中如何快速構建項目腳手架的文章就介紹到這瞭,更多相關Java中如何快速構建項目腳手架內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 教你如何在IDEA 中添加 Maven 項目的 Archetype(解決添加不起作用的問題)
- 構建Maven多模塊項目的方法
- 手把手教你寫Maven的archetype項目腳手架
- IDEA創建Maven項目一直顯示正在加載的問題及解決
- IDEA2022.1創建maven項目規避idea2022新建maven項目卡死無反應問題