通过
maven-archetype-plugin
插件可以自定义符合我们自己需求的archetype(骨架),不但可以快速完成项目的创建,而且可以复用现前搭建项目的基础设施,比如公共组件,从而提高开发效率。
archetype理解
Archetype是一个Maven项目的模板工具包,它定义了一类项目的基本架构。Archetype为开发人员提供了创建Maven项目的模板,同时它也可以根据已有的Maven项目生成参数化的模板。通过archetype,开发人员可以很方便地将一类项目的最佳实现应用到自己的项目中。在一个Maven项目中,开发者可以通过archetype提供的范例快速入门并了解该项目的结构与特点。
Archetype插件有4个目标可以使用:
- archetype:create(不推荐):从archetype 中创建一个Maven项目。
- archetype:generate:从archetype 中创建一个Maven项目,需要开发人员在指定archetype,插件会从远程仓库中自动获取。
- archetype:generate:从archetype 中创建一个Maven项目,需要开发人员在指定archetype,插件会从远程仓库中自动获取。
- archetype:crawl:搜索并更新仓库中的archetype。
archetype使用
maven提供了一些官方的archetype给开发者使用,主要如下:
- maven-archetype-quickstart
- maven-archetype-simple
- maven-archetype-webapp
我们可以使用mvn archetype:generate
生成特定骨架的maven项目。
//命令格式如下:
mvn archetype:generate -DarchetypeGroupId=archetype的groupId -DarchetypeArtifactId=archetype的artifactId -DarchetypeVersion=archetype的version -DgroupId=项目的groupId -DartifactId=项目的artifactId -Dversion=项目的version
//举个栗子:生成一个quick-start骨架的maven项目,artifactId为test,groupId为artifactId
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DgroupId=com.hhli -DartifactId=test -Dversion=1.0-SNAPSHOT
效果截图如下:
archetype自定义
前一部分讲述了如何使用maven官方自带的archetype生成特定的骨架(项目结构),那么我们是否可以自定义生成自己的项目结构呢?答案是显然的。
archetype自定义的优势:
- 可以集成公共的开发组件,提高开发效率。
公司内部对中间件的封装,可以集成进来;开源社区的优质轮子,可以集成进来。这样,项目可以有大量的优秀组件,避免重复造轮子。
另外,如果需要创建新项目,可以一键生成,不必在复制一个项目,更改项目名,删减代码之类的。 - 项目风格统一,便于统一维护。
试想,同一个archetype生成的项目,无论是项目结构,还是项目依赖的组件,应该都是类似的。如果有新的开发同学进入项目,熟悉了某个项目,其它项目除了业务逻辑,基本上不需要理解成本。
archetype如何自定义:
-
手动创建一个空项目
使用maven的maven-archetype-quickstart
或者IDE的生成一个空项目,
然后加入自己项目所依赖的组件,比如springboot,common mapper等。 -
根据创建的项目生成自己的archetype
2.1 进入第一步创建项目所在的根目录,执行mvn archetype:create-from-project
。
2.2 执行成功后,然后进入target\generated-sources\archetype
,可以发现有pom.xml
。
2.3 执行mvn deploy
部署archetype到私服或者中央仓库
,注意pom.xml需要设置私服的地址和archetype的坐标信息(下一步测试需要)
。
2.4 使用2.3生成的archetype生成maven项目,到此结束。
mvn archetype:generate -DarchetypeGroupId=com.hhli -DarchetypeArtifactId=test-archetype -DarchetypeVersion=1.0-SNAPSHOT -DgroupId=com.yangyu -DartifactId=haha
疑问
如果有疑问,欢迎讨论。