如何自定义archetype
这篇文章主要介绍了如何自定义archetype,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
青秀网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联2013年至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。
虽然maven已经提供了maven-archetype-webapp、maven-archetype-quickstart等项目骨架帮助我们快速构建项目架构,但是默认提供的archetype初始化的项目架构并不能满足开发需求,这时候就有必要自己写一个满足项目需求的archetype了
使用自定义archrtype生成的项目结构图
为了激发阅读兴趣,先放一张使用自定义archetype生成项目的项目结构图 基本上的类都是archetype
生成的
archetype是什么
可以简单的理解为模板工具类,通过archetype
我们可以快速的生成项目的基本架构。比如我们使用idea
创建一个maven web
项目时,常常会选择maven-archetype-webapp
模板来初始化项目,使用maven-archetype-webapp
生成的项目中包括webapp
目录,里面包含web
的配置文件
archetype的组成
要想写一个自定义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]结构说明
superman
项目结构图 包含了archetype
的四个组成部分,两个pom
文件,一个archtype-metadata
文件和五个原型文件[__rootArtifactId__-*
],其中__rootArtifactId__
在生成模板工程时会被传入的值替代archtype-metadata配置文件
1.定义使用
archetype
生成模板工程需要传入的参数com.h3t.test demo ${groupId} ${}
标识的变量都是通过maven中的命令行传进来的2.定义原型文件
src/main/java **/*.* src/test/java **/*.* src/main/resources **/*.* src/test/resources **/*.* module
属性介绍:id
:子模块工程的artifactId
dir
:子模块工程源文件在archetype-resources
里对应的directory
name
:子模块的名字.prototype pom文件
1.定义了五个子模块
${rootArtifactId}-common ${rootArtifactId}-dao ${rootArtifactId}-service ${rootArtifactId}-web ${rootArtifactId}-model 子模块依赖版本统一管理
${groupId} ${rootArtifactId}-common ${version} ${groupId} ${rootArtifactId}-dao ${version} ${groupId} ${rootArtifactId}-service ${version} ${groupId} ${rootArtifactId}-model ${version} 子模块所需依赖都定义在该
pom
中,子模块使用依赖时不需要
标签原型文件以web模块说明 就是一个简单的maven工程,里面写了使用archetype生成模板项目的类
附:superman archetype代码
快速开始【superman archetype使用指南】
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
,则需修改日志保存地址${LOG_ERROR_HOME}//%d.log 将
//
修改为/
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”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!
文章名称:如何自定义archetype
本文URL:http://scyanting.com/article/jchjhd.html