使用Maven archetype 自定义项目脚手架
An archetype is defined as?an original pattern or model from which all other things of the same kind are made.?
目錄
背景
創建archetype模板
手動創建
通過已有的項目結構生成archetype
通過archetype創建新項目
1.通過maven命令的方式
2.通過IDE方式生成(使用本地install的archetype)
背景
開發中,我們通常會使用maven內置的腳手架也就是archetype來快速生成項目結構。但是在開發中,你會發現maven預先提供的archetyp遠遠不夠,每次新建一個項目,我們都需要從現有的項目copy pom.xml,spring的配置文件,一些公共的工具類等,對于多module項目,我們還需要去創建各個module。在這樣的背景下,我們就需要使用maven的archetype去定義一個自己想要的代碼腳手架以供更快的生成新的項目骨架,可以進行后續開發。
創建archetype模板
手動創建
1.首先創建一個空的maven項目
2.創建archetype-metadata.xml,位于src/main/resources/META-INF/maven/目錄下
<?xml version="1.0" encoding="UTF-8"?> <archetype-descriptor xsi:schemaLocation="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0 http://maven.apache.org/xsd/archetype-descriptor-1.1.0.xsd" name="ibu-itinerary-archetype"xmlns="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><!--屬性變量定義--><requiredProperties><requiredProperty key="package"><defaultValue>com.chenpp.archetype</defaultValue></requiredProperty></requiredProperties><!--項目子模塊定義--><modules><module id="${rootArtifactId}-domain" dir="__rootArtifactId__-domain" name="${rootArtifactId}-domain"><fileSets><fileSet filtered="true" packaged="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.java</include></includes></fileSet></fileSets></module><module id="${rootArtifactId}-dao" dir="__rootArtifactId__-dao" name="${rootArtifactId}-dao"><fileSets><fileSet filtered="true" packaged="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.java</include></includes></fileSet></fileSets></module><module id="${rootArtifactId}-service" dir="__rootArtifactId__-service" name="${rootArtifactId}-service"><fileSets><fileSet filtered="true" packaged="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.java</include></includes></fileSet></fileSets></module><module id="${rootArtifactId}-controller" dir="__rootArtifactId__-controller" name="${rootArtifactId}-controller"><fileSets><fileSet filtered="true" packaged="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.java</include></includes></fileSet></fileSets></module></modules> </archetype-descriptor>- requiredProperty:定義通過archetype生成項目時需要提供的參數,這些屬性可以在資源元文件里的任意一個文件里通過${var}來引用,所以的元文件最終都可以選擇通過velocity引擎來執行替換后生成。
默認的屬性有:groupId,artifactId,packeage,version等 - module 定義子模塊
1) id :定義子模塊工程的artifactId
2)?dir? :定義子模塊源文件在archetype-resources里對應的directory
3) name :定義子模塊的名字 - fileSet:定義?通過Archetype插件生成的項目里的文件和腳手架jar里的文件的關聯關系
1) packaged="true"標識directory中對應的內容是否要放入到package中,比如package為com.chenpp,那么如果該屬性為true,則對應的java文件會放到com/chenpp文件夾下,也就是包路徑下。
2)?filtered="true"標識下面提到的${}是否要進行替換
3.創建對應的子模塊下的pom.xml和java文件
以domain子模塊為例
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>${rootArtifactId}</artifactId><groupId>${groupId}</groupId><version>${version}</version></parent><modelVersion>4.0.0</modelVersion><artifactId>${artifactId}</artifactId><dependencies><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency></dependencies></project> package ${package}.entity;public class User{private String userName;private String sex;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;} }整個項目的結構如下:
archetype項目寫好之后,通過mvn clean install命令安裝到本地的maven倉庫中
通過已有的項目結構生成archetype
在項目的根目錄下(即項目的pom.xml文件所在目錄)下執行maven命令:
?mvn archetype:create-from-project
這樣就可以通過當前項目結構創建一個archetype骨架,生成的archetype的信息,默認是在project根目錄下的 target\generated-sources\archetype 目錄
然后在archetype的根目錄下(即:?項目根目錄\target\generated-sources\archetype)執行mvn clean install命令就可以將archetype安裝在本地倉庫里了。
通過archetype創建新項目
1.通過maven命令的方式
前面的四個參數是生成的新項目的maven groupId以及package,后面三個參數指定使用的腳手架archetype
?mvn archetype:generate -DgroupId=com.chenpp -DartifactId=supermarker-project -Dpackage=com.chenpp.market -Dversion=1.0 -DarchetypeGroupId=com.chenpp ?-DarchetypeArtifactId=archetype-project -DarchetypeVersion=1.0 -X -DarchetypeCatalog=local
archetypeCatalog用來指定maven-archetype-plugin讀取archetype-catalog.xml文件的位置:
internal——maven-archetype-plugin內置的
local——本地的,位置為~/.m2/archetype-catalog.xml
remote——指向Maven中央倉庫的Catalog
生成新的項目如下:
2.通過IDE方式生成(使用本地install的archetype)
使用本地的archetype jar來生成新項目
總結
以上是生活随笔為你收集整理的使用Maven archetype 自定义项目脚手架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何获取Google地图API密钥?(翻
- 下一篇: Redis缓存击穿和缓存雪崩、缓存穿透以