maven-archetype我们通常称它为脚手架,用于项目初期快速生成项目结构,统一项目框架。maven自带多种脚手架,通常对于团队而言,很难满足需求,需要自定义一些适合自己团队的脚手架。
mvn archetype:generate -DarchetypeCatalog=local
用于展示本地local已有的maven脚手架。
在结果中选择archetype的序号,本范例中为:1,然后按照系统提示逐步输入groupId、artifactId、version、package四个必需的属性,
其中version、package系统会智能给出一个默认值,回车确认后系统就会生成新的maven项目了
也可以直接在IDEA中选择相应archetype用于初始化项目
该部分不展开讲解,可以自己动手试试。
脚手架也叫工程模板,用于创建一个或多个默认的工程并为每个工程填充好默认的一些文件和配置。同时要抽象出生成的工程需要的一些属性,做到这些属性可动态配置。在maven里通过定制的archetype来生成脚手架。maven本身内置了很多archetype 工程模板。
进入目录
C:\Users\xxx.IntelliJIdea2018.1\system\Maven\Indices
找到UserArchetypes.xml文件修改其内容即可,可通过删除标签,不会马上生效需要重启IDEA
自定义脚手架最快的方式即从一个项目中生成脚手架
创建一个脚手架流程图如下所示:
创建任一个maven项目,编辑好项目的初始结构,比如定义好model、controller层次目录,使用已下maven命令即可将当前项目创建出脚手架:
mvn archetype:create-from-project
到项目目录下,执行该命令后将会生成该项目的一个脚手架。
在项目target/generated-sources
下会看到如下目录,该文件夹下就是我们从项目中生成的脚手架项目:
进入到archetype目录,将生成的脚手架发布到本地仓库,使用以下maven命令:
mvn install
在仓库中将看到对应的包信息,注意该目录下jar包的存在性,以免install失败。
IDEA添加自定义脚手架
如果你的脚手架包在远程仓库,也可以如下配置
设置Repository的地址为脚手架所在位置
比如:http://nexus.xxx.com/service/rest/repository/browse/maven-public/com/test/archetype/archetypedemo-archetype/
添加成功后,可以再目录中看到所添加的脚手架。
此时选择该自定义脚手架所生成的项目就是与我们之前所定义的一样。
注意:空目录,会被忽略掉
这种方式简单实用,有些复杂场景还需要借助原生编写脚手架方式
脚手架项目中的pom.xml核心内容
org.apache.maven.archetype
archetype-packaging
3.1.1
maven-archetype-plugin
3.1.1
pom文件基本上与我们平常项目中的pom无过多差别,主要在于一些依赖和插件的区别。这里需要archetype-packaging
以及maven-archetype-plugin
注意:使用该插件需要jdk1.7+
archetype-resources下的模板内容定义
需要注意的是#set的声明,该目录下面的内容无论是java文件还是配置文件都需要在头部加上如下内容,主要用于标记处理
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
archetype-metadata.xml
archetype-metadata.xml
该文件是一个非常重要的配置文件,包括了由该脚手架所生成的项目结构有哪些,以及一些过滤处理等等,实例如下所示
src/main/java
**/*.java
src/main/resources
**/*.properties
......
.gitignore
packaged="true"标识对应的内容要放入到package中,比如package为com.test,那么如果该属性为true,则对应的java文件会放到com/test文件夹下,也就是包路径下。
filtered="true"标识 是否需要占位符${}
的处理如package ${package}
关于占位符的配置可参加archetype.properties
文件
#Fri Jul 12 10:38:23 GMT+08:00 2019
package=it.pkg
version=0.1-SNAPSHOT
groupId=archetype.it
artifactId=basic
更多Archetype(脚手架)内容可参考maven官网:http://maven.apache.org/archetype/index.html
如有不对之处或补充内容欢迎指出。
如果您喜欢互联网资讯,欢迎访问新事物: www.v2tn.com