成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Maven Archetype 多 Module 自定義代碼腳手架

開發(fā) 架構(gòu)
大部分公司都會(huì)有一個(gè)通用的模板項(xiàng)目,幫助你快速創(chuàng)建一個(gè)項(xiàng)目。通常,這個(gè)項(xiàng)目需要集成一些公司內(nèi)部的中間件、單元測試、標(biāo)準(zhǔn)的代碼格式、通用的代碼分層等等。

大部分公司都會(huì)有一個(gè)通用的模板項(xiàng)目,幫助你快速創(chuàng)建一個(gè)項(xiàng)目。通常,這個(gè)項(xiàng)目需要集成一些公司內(nèi)部的中間件、單元測試、標(biāo)準(zhǔn)的代碼格式、通用的代碼分層等等。

今天,就利用 Maven 的 Archetype 插件來簡單實(shí)現(xiàn)這一功能。

通過上面的圖很清楚可以看到,實(shí)際利用這個(gè)插件機(jī)制就簡單的幾個(gè)步驟:

archetype:create-from-project ,根據(jù)自己的項(xiàng)目代碼生成原型項(xiàng)目

通過 install 等命令生成原型文件

archetype:generate,通過原型生成目標(biāo)項(xiàng)目

看起來挺簡單的,但是你會(huì)發(fā)現(xiàn)你用網(wǎng)上搜到的資料來玩的話,你生成的項(xiàng)目特別傻X,包括官方的文檔,我也真是沒搞明白他們?yōu)楹文敲磁1?,一步兩步。。就他媽好?

一堆問題,比如 module 名稱不會(huì)變、包名變了代碼中沒變,依賴報(bào)錯(cuò)一大堆問題,還是有必要說下中間要怎么做的。

創(chuàng)建Archetype

首先,準(zhǔn)備好我們自己的模板項(xiàng)目,保證代碼都是OK的。

進(jìn)入項(xiàng)目根目錄,執(zhí)行命令:

  1. mvn archetype:create-from-project 

然后項(xiàng)目根目錄下會(huì)生成target文件夾,這個(gè)很簡單,不會(huì)有任何障礙,你看下面的圖,注意看每個(gè)模塊的名字,這是我改過的!!

你生成應(yīng)該會(huì)發(fā)現(xiàn)他不長這樣,這就是問題啊!接著往下看吧。

這里最核心的部分就在于怎么修改target/generated-sources/src/main/resources/archetype-resources下的文件。

如果不修改直接繼續(xù)的話,最終生成的項(xiàng)目會(huì)發(fā)現(xiàn)module的名稱不會(huì)變,包名也不會(huì)變,代碼里引用的會(huì)有一堆報(bào)錯(cuò)。

接著,我們看看咋改的,這一堆破問題。

修改父pom

首先,找到根目錄的pom文件,會(huì)發(fā)現(xiàn)缺少module信息,這個(gè)必須加上。

  1. <modules> 
  2.  <module>${rootArtifactId}-client</module> 
  3.  <module>${rootArtifactId}-common</module> 
  4.  <module>${rootArtifactId}-service</module> 
  5.  <module>${rootArtifactId}-facade</module> 
  6.  <module>${rootArtifactId}-starter</module> 
  7. </modules> 

 

父pom依賴引用的每個(gè)module也要修改,groupId 和 artifactId 按照我給出的方式來改,不要寫死!!

  1. <dependencyManagement> 
  2.   <dependencies> 
  3.    <dependency> 
  4.     <groupId>${groupId}</groupId> 
  5.     <artifactId>${rootArtifactId}-client</artifactId> 
  6.     <version>${project.version}</version> 
  7.    </dependency> 
  8.    ... ... 
  9.   </dependencies> 
  10.  </dependencyManagement> 

 

 

修改module

這個(gè)就是圖中的問題,默認(rèn)生成的module可能就是模板項(xiàng)目的名字,需要修改成類似__rootArtifactId__-client這種形式,注意是雙下劃線。

然后module中的互相引用 groupId 和 artifactId 按照父 pom 的方式對應(yīng)修改。

archetype-metadata 修改

找到META-INF/maven/archetype-metadata.xml文件,修改modules相關(guān)的部分,重點(diǎn)注意看 id 、dir、name 的修改方式。

  1. <modules> 
  2.     <module id="${rootArtifactId}-client" dir="__rootArtifactId__-client" name="${rootArtifactId}-client"
  3.       <fileSets> 
  4.         <fileSet filtered="true" packaged="true" encoding="UTF-8"
  5.           <directory>src/main/java</directory> 
  6.           <includes> 
  7.             <include>**/*.java</include> 
  8.           </includes> 
  9.         </fileSet> 
  10.       </fileSets> 
  11.     </module> 
  12.     ... ... 
  13. </modules>     

 

修改完成之后,進(jìn)入 target/generated-sources/archetype目錄,執(zhí)行命令:

  1. mvn install 

順便執(zhí)行下mvn deploy上傳到nexus。

使用Archetype

經(jīng)過上面的步驟,原型 Archetype 已經(jīng)創(chuàng)建完成,其實(shí)最大的坑也就是上面那部分,花了老半天時(shí)間,簡直坑爹啊。

下面看看怎么使用吧,兩種使用方式。

命令行

隨便進(jìn)入你想保存項(xiàng)目的路徑,執(zhí)行命令。

  1. mvn archetype:generate -DarchetypeCatalog=local 

依次按照提示輸入 groupId、artifactId 即可完成創(chuàng)建。

那怎么給其他人使用?

你的本地maven倉庫目錄(比如~/.m2/repository)有一個(gè)文件archetype-catalog.xml,共享給其他人就行了。

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <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" 
  3.     xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0" 
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5.   <archetypes> 
  6.     <archetype> 
  7.       <groupId>com.example</groupId> 
  8.       <artifactId>template-archetype</artifactId> 
  9.       <version>1.0.0-SNAPSHOT</version> 
  10.       <description>Example Project</description> 
  11.     </archetype> 
  12.   </archetypes> 
  13. </archetype-catalog> 

 

 

 

IDEA

新建項(xiàng)目,選擇 Maven,勾選 Create from archetype,選擇 Add Archetype...

接著,輸入我們自定義的 Archetype 的 GroupId、ArtifactId、Version 信息。

 

Add 成功之后就可以在列表中看到我們自己的 archetype,然后按照流程創(chuàng)建即可。

 

責(zé)任編輯:武曉燕 來源: 艾小仙
相關(guān)推薦

2016-09-07 15:35:06

VueReact腳手架

2021-01-07 05:34:07

腳手架JDK緩存

2021-11-08 09:35:09

Vue代碼前端

2021-12-23 10:35:32

SpringCloud腳手架架構(gòu)

2025-05-16 07:24:41

Springkafka腳手架

2014-08-15 09:36:06

2021-05-21 05:22:52

腳手架工具項(xiàng)目

2020-06-29 11:35:02

Spring BootJava腳手架

2020-03-20 08:32:41

物聯(lián)網(wǎng)腳手架傳感器

2018-06-11 14:39:57

前端腳手架工具node.js

2019-12-25 15:20:48

前端腳手架命令

2018-08-30 16:08:37

Node.js腳手架工具

2022-04-24 11:33:47

代碼管理工程

2023-11-21 17:36:04

OpenFeignSentinel

2023-07-14 10:53:00

開源前端

2020-08-19 08:55:47

Redis緩存數(shù)據(jù)庫

2022-12-12 08:56:45

Vite3Vite

2009-09-16 15:05:58

CakePHP腳手架

2024-03-11 13:18:00

RustClap項(xiàng)目

2022-07-18 07:58:46

Spring工具工具類
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 北条麻妃99精品青青久久 | 丁香婷婷在线视频 | 国产高清视频在线播放 | 国产精品国产成人国产三级 | 日韩综合一区 | 日韩av电影在线观看 | 国产精品揄拍一区二区 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 国产一区视频在线 | 国产一级片一区二区 | 男人的天堂亚洲 | av大片 | 久久一日本道色综合久久 | 日韩精品在线视频免费观看 | 亚洲国产中文在线 | 在线观看国产 | 日韩久久中文字幕 | 一区二区三区高清不卡 | aa级毛片毛片免费观看久 | 一区二区久久精品 | 国产精品1区2区3区 欧美 中文字幕 | 欧美激情一区二区三区 | 日韩中文字幕在线视频 | 精品精品视频 | 日韩三级 | 一级在线免费观看 | 国产一区二区三区在线免费观看 | 亚洲国产视频一区二区 | 在线观看免费av网 | 成人国产免费观看 | 伊伊综合网 | 天天操操操操操 | 在线观看国产精品一区二区 | 欧美日韩高清一区 | 日韩精品一区二区三区在线观看 | 亚洲精品久久久久久一区二区 | 日韩另类 | 色一阁| 亚洲www啪成人一区二区麻豆 | 97精品超碰一区二区三区 | 国产一区不卡 |