您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何自定義archetype,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
雖然maven已經提供了maven-archetype-webapp、maven-archetype-quickstart等項目骨架幫助我們快速構建項目架構,但是默認提供的archetype初始化的項目架構并不能滿足開發需求,這時候就有必要自己寫一個滿足項目需求的archetype了
為了激發閱讀興趣,先放一張使用自定義archetype生成項目的項目結構圖 基本上的類都是archetype
生成的
可以簡單的理解為模板工具類,通過archetype
我們可以快速的生成項目的基本架構。比如我們使用idea
創建一個maven web
項目時,常常會選擇maven-archetype-webapp
模板來初始化項目,使用maven-archetype-webapp
生成的項目中包括webapp
目錄,里面包含web
的配置文件
要想寫一個自定義archetype
,首先得知道一個archetype的組成。archetype由四部分組成:
prototype files
原型文件
位于src/main/resources/archetype-resource
目錄下。prototype files
原型文件可以理解為多模塊中的子模塊或是單模塊工程中的源文件[即src文件]。這些原型文件在使用對應archetype
生成項目時被生成
archetype-metadata.xml
位于src/main/resources/META-INF/maven/
目錄下。該配置文件中主要列出了原型文件以及使用archetype
生成模板工程需要的參數
prototype pom
位于src/main/resources/archetype-resources
目錄下。這個pom
文件會出現在archetype
創建的模板工程中,如果是單模塊工程,則是對整個項目的依賴管理;如果是多模塊工程,該pom
是總pom
文件,該文件中會定義項目的子模塊以及對子模塊的依賴進行管理等,子模塊pom
定義在子模塊下,子模塊pom文件只管理子模塊的依賴。
archetype pom
位于自定義archetype
工程的根目錄下。這是archetype
工程項目的pom
文件,里面一般沒什么東西,不會出現在archetype
創建的模板工程中
superman
項目結構圖 包含了archetype
的四個組成部分,兩個pom
文件,一個archtype-metadata
文件和五個原型文件[__rootArtifactId__-*
],其中__rootArtifactId__
在生成模板工程時會被傳入的值替代
archtype-metadata配置文件
1.定義使用archetype
生成模板工程需要傳入的參數
<!--需要輸入的屬性--> <requiredProperties> <requiredProperty key="groupId"> <!--默認的groupId--> <defaultValue>com.h3t.test</defaultValue> </requiredProperty> <requiredProperty key="artifactId"> <!--默認的artifactId--> <defaultValue>demo</defaultValue> </requiredProperty> <requiredProperty key="package"> <!--默認的包名和groupId一樣--> <defaultValue>${groupId}</defaultValue> </requiredProperty> </requiredProperties>
${}
標識的變量都是通過maven中的命令行傳進來的
2.定義原型文件
<module id="${rootArtifactId}-web" name="${rootArtifactId}-web" dir="__rootArtifactId__-web"> <fileSets> <fileSet filtered="true" encoding="UTF-8" packaged="true"> <directory>src/main/java</directory> <includes> <include>**/*.*</include> </includes> </fileSet> <fileSet filtered="true" encoding="UTF-8" packaged="true"> <directory>src/test/java</directory> <includes> <include>**/*.*</include> </includes> </fileSet> <fileSet encoding="UTF-8"> <directory>src/main/resources</directory> <includes> <include>**/*.*</include> </includes> </fileSet> <fileSet encoding="UTF-8"> <directory>src/test/resources</directory> <includes> <include>**/*.*</include> </includes> </fileSet> </fileSets> </module>
module
屬性介紹: id
:子模塊工程的artifactId
dir
:子模塊工程源文件在archetype-resources
里對應的directory
name
:子模塊的名字.
prototype pom文件
1.定義了五個子模塊
<!--項目子模塊--> <modules> <module>${rootArtifactId}-common</module> <module>${rootArtifactId}-dao</module> <module>${rootArtifactId}-service</module> <module>${rootArtifactId}-web</module> <module>${rootArtifactId}-model</module> </modules>
子模塊依賴版本統一管理
<dependencyManagement> <!--modules--> <dependency> <groupId>${groupId}</groupId> <artifactId>${rootArtifactId}-common</artifactId> <version>${version}</version> </dependency> <dependency> <groupId>${groupId}</groupId> <artifactId>${rootArtifactId}-dao</artifactId> <version>${version}</version> </dependency> <dependency> <groupId>${groupId}</groupId> <artifactId>${rootArtifactId}-service</artifactId> <version>${version}</version> </dependency> <dependency> <groupId>${groupId}</groupId> <artifactId>${rootArtifactId}-model</artifactId> <version>${version}</version> </dependency> </dependencies> </dependencyManagement>
子模塊所需依賴都定義在該pom
中,子模塊使用依賴時不需要<version>
標簽
原型文件以web模塊說明 就是一個簡單的maven工程,里面寫了使用archetype生成模板項目的類
<hr>
附:superman archetype代碼
<hr>
1.下載源碼
git clone https://github.com/TiantianUpup/superman.git
2.打開superman工程,將其安裝到本地倉庫 運行如下命令
mvn clean install
3.使用自定義archetype初始化項目
mvn archetype:generate -DgroupId=com.h3t.test -DartifactId=superman-demo -Dversion=1.0.0-SNAPSHOT -DarchetypeGroupId=com.h3t.study -DarchetypeArtifactId=superman -DarchetypeVersion=0.0.1-SNAPSHOT -X -DarchetypeCatalog=local
參數說明
-DgroupId
組ID,默認項目的包名的組ID相同
DartifactId
:項目唯一標識符,即項目名稱
-DarchetypeGroupId
:superman的組ID,值不需要進行修改
-DarchetypeArtifactId
:superman的artifactId,值不需要進行改變
4.移動配置文件 因為使用archetype
生成項目時會將resource
下面的文件丟失,所以目前將配置文件放在了web
模塊下的resource
包下,創建項目成功后需手動將文件移動到web
模塊下的resource
文件夾下,并將resource
文件成標記成Resources Root
5.修改resource文件夾下的配置文件 該文件夾下有application.properties
,logback.properties
,logback-spring.xml
三個配置文件
application.properties
配置文件的修改 application.properties
主要是Spring
、MyBatisPlus
和數據庫的配置信息
spring.datasource.url=jdbc:mysql://localhost:3306/your_database?characterEncoding=UTF8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=your password
修改數據庫、密碼,默認用戶名為root
mybatis-plus.mapper-locations=classpath*:/mapper/*.xml # mybatis-plus.type-aliases-package=
指定MybatisPlus
實體類別名的包,即model
模塊的po
層包名,默認MybatiPlus
的mapper
文件保存在resource
下的mapper
文件夾下,可自行修改
logback.properties
配置文件的修改 logback.properties
定義了error
級別日志和info
級別日志的保存地址
LOG_ERROR_HOME= LOG_INFO_HOME=
logback-spring.xml
配置文件的修改 logback-spring.xml
主要是日志輸出規則的定義,若為windows
系統無需進行修改,若為linux os
或mac os
,則需修改日志保存地址
<fileNamePattern>${LOG_ERROR_HOME}//%d.log</fileNamePattern>
將//
修改為/
6 使用代碼生成器生成controller
、service
、dao
、po
層代碼 代碼生成器類位于service
模塊下的generator
包下,只需要初始化幾個字段值運行就可以生成相應的代碼。在運行前首先在項目根目錄下創建一個mp-generator-output
文件夾,該文件夾的名字和OUTPUT_DIR
字段值保持一致
PACKAGE_NAME
生成代碼的包名,和項目的包名一致,負責復制過去代碼會有一些小問題 -OUTPUT_DIR
生成代碼保存文件地址,默認保存在項目下的mp-generator-output
文件夾下,可以修改為自定義保存地址
AUTHOR
注釋中作者的名字
DRIVER_NAME
數據庫驅動
HOST
數據庫主機號
PORT
數據庫端口
DATABASE
數據庫名字
USERNAME
數據庫用戶名
PASSWORD
數據庫密碼
7.將生成的代碼移動到對應模塊對應包下
impl
對應實體類接口實現類
controller
文件夾
實體類對應的Controller
,將該目錄下的類移到web
模塊下的controller
包下
mapper
文件夾 實體類對應的DAO
層,該目錄下包含xml
文件和對應實體的接口類,將xml文
件移到dao
模塊resource
下的mapper
文件夾下,需自行建立mapper
文件夾,將接口移到dao
模塊下的mapper
包下并在接口類上添加@Mapper
注解,需自行建立 mapper
包。同時將resource文件夾標記成Resources root
service
對應實體類接口
將service
目錄下的接口移到service
模塊下的service
包下,impl
目錄下的類移到service
模塊下的service.impl
包下
po文件夾 將該目錄下的類移到model
模塊下的po
包下,并修改繼承關系,統一繼承BasePO
類,因為BasePO
類 包含了id
、gmtCreate
、gmtModified
、deleted
這些數據庫基本字段,需將生成的實體類手動刪除這些重復字段。同時自動生成的po
類缺失了@TableName
、@TableField
注解需手動補充。注解的使用方式可參考BasePO
類
8.修改web
模塊aspect
包下的環繞通知
@Around("execution(* yourpackage.controller..*(..))")
該切面主要用于攔截controller層返回的結果,將其封裝成統一結果返回
9 啟動項目
web
模塊下的Runner
類為啟動類,運行該類即可啟動,默認端口為8081
感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何自定義archetype”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。