maven自定义archetype
在开发过程中我们经常会创建一系列结构类似的新项目,这些项目结构和基础配置基本或完全一致,maven就提供了archetype类型来规定新建项目的结构及基础配置,利用archetype就可以快速简单的搭建新项目。
一、创建Maven项目的一般步骤
一般情况下创建一个maven项目会遵循以下步骤:
1.选择项目类型,类型为maven项目
2.选择是否跳过使用archetype模板类型创建,这里选择否
3.进入archetype选择界面,这里会列出所有可以使用的archetype类型,选择其中一种,其中maven-archetype-quickstart和maven-archetype-webapp就是我们经常用到的。
在这里列出了所有本机默认或已配置的archetype类型,也可以点击右侧的Configure...按钮可以进入archetype配置界面,或者直接从Preferences也可进入,界面如下:
4.完成创建
二、自己定义archetype
一般情况下我们使用内置的archetype类型就基本够用了,但是每一个公司或团体都有自己的规范与架构,这时就需要一套符合本地需求的archetype类型配置,所以我们就需要自定义一套archetype。
创建archetype必须已存在项目为基础,这个项目可以是专门新创建的模板项目,也可以是已发布的存在项目,我们这里已一个新创建的模板项目为例。
1.首先创建模板项目,将以此项目作为模板创建archetype
2.创建完成后的项目结构如下所示:
项目创建好之后把你要想作为模板的内容都添加和配置好,无论是java、xml、properties、html等等均可。
3.开始创建archetype配置文件,在父项目(archetype-parent)上右键-->Run As-->Maven build
填入构建参数:archetype:create-from-project,运行即可。
构建完成后会显示如下类似信息:
......省略
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-archetype-plugin:2.4:jar (default-jar) @ archetype-parent-archetype ---
[INFO] Building archetype jar: D:\workspace_2\archetype-parent\target\generated-sources\archetype\target\archetype-parent-archetype-1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.519 s
[INFO] Finished at: 2018-06-22T18:17:01+08:00
[INFO] ------------------------------------------------------------------------
[INFO] Archetype project created in D:\workspace_2\archetype-parent\target\generated-sources\archetype
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] archetype-parent 1.0-SNAPSHOT ...................... SUCCESS [ 10.438 s]
[INFO] archetype-web ...................................... SKIPPED
[INFO] archetype-biz 1.0-SNAPSHOT ......................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.304 s
[INFO] Finished at: 2018-06-22T18:17:01+08:00
[INFO] ------------------------------------------------------------------------
三 生成archetype
1.构建成功后会在target目录下生成相关配置文件,如下所示:
2.其中archetype的pom.xml与archetype-metadata.xml这两个文件是需要我们根据实际情况进行修改的。
pom.xml文件原始内容:
<?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"><modelVersion>4.0.0</modelVersion><groupId>com.archetype.example</groupId><artifactId>archetype-parent-archetype</artifactId><version>1.0-SNAPSHOT</version><packaging>maven-archetype</packaging><name>archetype-parent-archetype</name><build><extensions><extension><groupId>org.apache.maven.archetype</groupId><artifactId>archetype-packaging</artifactId><version>2.4</version></extension></extensions><pluginManagement><plugins><plugin><artifactId>maven-archetype-plugin</artifactId><version>2.4</version></plugin></plugins></pluginManagement></build> </project>
pom文件中groupId、artifactId、version与name这4个属性需要我们进行修改,其中因为我们的项目版本声明的是1.0-SNAPSHOT,所以这里也继承为1.0-SNAPSHOT,需要修改为1.0或其他,否则在生成archetype之后不能直接显示,需要勾选相关选项才行。其他3个属性根据自己的需求修改为合理的即可。
修改完成后如下:
<?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"><modelVersion>4.0.0</modelVersion><groupId>com.archetype.example</groupId><artifactId>example-archetype-web</artifactId><version>1.0</version><packaging>maven-archetype</packaging><name>example-archetype-web</name>...省略 </project>
archetype-metadata.xml文件原始内容:
<?xml version="1.0" encoding="UTF-8"?> <archetype-descriptorxsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd"name="archetype-parent"xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><fileSets><fileSet encoding="UTF-8"><directory>.settings</directory><includes><include>**/*.prefs</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.project</include></includes></fileSet></fileSets><modules><module id="archetype-web" dir="archetype-web" name="archetype-web"><fileSets><fileSet filtered="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.java</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/main/webapp</directory><includes><include>**/*.xml</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>.settings</directory><includes><include>**/*.xml</include></includes></fileSet><fileSet encoding="UTF-8"><directory>.settings</directory><includes><include>**/*.container</include><include>**/*.component</include><include>**/*.name</include><include>**/*.jsdtscope</include><include>**/*.prefs</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.classpath</include><include>.project</include></includes></fileSet></fileSets></module><module id="archetype-biz" dir="archetype-biz" name="archetype-biz"><fileSets><fileSet encoding="UTF-8"><directory>.settings</directory><includes><include>**/*.prefs</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.classpath</include><include>.project</include></includes></fileSet></fileSets></module></modules> </archetype-descriptor>
而archetype-metadata.xml文件需要修改的内容就较多了,其中<fileSet>标签的作用就是过滤和包含哪些文件的作用,这里我们直接修改为“全部”即可,如下:
<fileSets><fileSet filtered="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/main/resources</directory><includes><include>**/**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/resources</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.**</include></includes></fileSet> </fileSets>
修改完成后的archetype-metadata.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <archetype-descriptorxsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd"name="archetype-parent"xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><fileSets><fileSet filtered="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/main/resources</directory><includes><include>**/**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/resources</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.**</include></includes></fileSet></fileSets><modules><module id="archetype-web" dir="archetype-web" name="archetype-web"><fileSets><fileSet filtered="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/main/resources</directory><includes><include>**/**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/resources</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.**</include></includes></fileSet></fileSets></module><module id="archetype-biz" dir="archetype-biz" name="archetype-biz"><fileSets><fileSet filtered="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/main/resources</directory><includes><include>**/**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/resources</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.**</include></includes></fileSet></fileSets></module></modules> </archetype-descriptor>
3.安装archetype
pom与archetype-metadata.xml两个文件修改完成后,进入到target\generated-sources\archetype目录下执行构建命令:
mvn install
构建完成后显示类似信息:
...省略
[INFO] Installing D:\workspace_2\archetype-parent\target\generated-sources\archetype\pom.xml to C:\Users\Administrator\.
m2\repository\com\archetype\example\example-archetype-web\1.0\example-archetype-web-1.0.pom
[INFO]
[INFO] --- maven-archetype-plugin:2.4:update-local-catalog (default-update-local-catalog) @ example-archetype-web ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 31.300 s
[INFO] Finished at: 2018-06-25T11:44:43+08:00
[INFO] Final Memory: 16M/114M
[INFO] ------------------------------------------------------------------------
构建成功后我们的仓库目录下的archetype-catalog.xml文件会将此archetype添加,出现以下内容说明添加成功。内容如下:
<?xml version="1.0" encoding="UTF-8"?> <archetype-catalogxsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><archetypes><archetype><groupId>com.archetype.example</groupId><artifactId>example-archetype-web</artifactId><version>1.0</version><description>example-archetype-web</description></archetype></archetypes> </archetype-catalog>
archetype-catalog.xml所在位置为:maven仓库位置\archetype-catalog.xml(我这里为:C:\Users\Administrator\.m2\archetype-catalog.xml)。
构建成功之后我们就可以在创建Maven项目的时候选择这个模板来创建新项目了,如下所示:
三、上传archetype至nexus私服
有些公司或团体会提供自己的私服,如果将自定义的archetype上传至私服将给使用者带来极大的便利。
1.打开nexus服务器主页
进入主页后,点击右上角“Log In”按钮进行登录:
2.上传
选择合适的Repositories,我这里选择了3rd party,然后点击上传:
然后选择pom类型上传,选择本地仓库中的pom文件,如下:
最后选择jar文件,并上传:
上传成功后会在私服的根目录下的archetype-catalog.xml中添加该archetype,内容类似于我们本地仓库。
通过链接或者download按钮可以获取该文件的内容及地址,我这里为:http://nexus.example.com/nexus/service/local/repositories/thirdparty/content/archetype-catalog.xml
3.Eclipse中添加archetype类型
打开Eclipse的Maven配置页,点击Add Remote Catalog按钮,添加远程archetype配置,如下所示:
验证并添加完成后会在archetypes列表中显示这个远程配置信息,如下:
至此所有配置完成可以使用了。
maven自定义archetype相关推荐
- Maven自定义Archetype项目模板
前言:在某课网上学习到可以使用命令mvn archetype:create-from-project来创建自己的项目模板(文中提及的项目模板即 原型 archetype),对此我十分感兴趣.但是,遗憾 ...
- Maven 自定义 archeType
根据已有项目创建模板,后续依据模板创建工程,提高效率 创建archeType 在工程根目录打包 mvn archetype:create-from-project # 使用个人settings mvn ...
- (转)Maven之自定义archetype生成项目骨架
背景:最近在开发一个项目的基础构件,在以后项目的开发过程中可以直接使用该构件快速的生成项目骨架进行开发. 摘要:使用过Maven的人都知道maven中有许多功能都是通过插件来提供的,今天我们来说一下其 ...
- Maven之自定义archetype生成项目骨架(一)
摘要:使用过Maven的人都知道maven中有许多功能都是通过插件来提供的,今天我们来说一下其中的一个插件:maven-archetype-plugin ,通过该插件可以自定义符合我们自己需求的arc ...
- maven自定义脚手架(快速生成项目)
Maven之自定义archetype生成项目骨架 利用脚手架生成 新项目 命令行方式 mvn archetype:generate \ -DarchetypeGroupId=com.xxx \ -Da ...
- 导入自定义archetype
导入自定义archetype 前提:该archetype是maven项目,采用微服务架构,包含一个asssembly负责打包的子项目,以及负责主要程序的boot子项目,可自行增加其他子项目. 该arc ...
- maven java archetype_使用maven创建Archetype
Archetype原型 也就是说为项目生成一个原型,可以把这个项目发布,其他人就可以直接通过命令构建一个原型项目了. 其实我一开始也是不知道maven还有这个功能的,但是在使用的springside的 ...
- idea自定义archetype及错误处理
介绍:公司内部会制定自己的规范及包结构.当创建新项目的时候就需要选择骨架,即可生成包结构.本文章简单介绍如何创建,解决遇到的各种问题. 一.创建项目. idea点击file--->new---& ...
- 删除Maven骨架Archetype
删除Maven骨架Archetype 文章目录 删除Maven骨架Archetype 前言 一. IDEA中删除Maven骨架Archetype删除 有些自定义的需要删除: 把骨架对应上面的两个地方的 ...
最新文章
- CSharp设计模式读书笔记(22):策略模式(学习难度:★☆☆☆☆,使用频率:★★★★☆)...
- 包包的结构制图_15种常见领型的结构制图
- 机器学习笔记III: 基于支持向量机的分类预测
- C++ strlen和size的等价性
- 无限循环小数和无限不循环小数
- 第十一篇、HTML5隐藏播放器播放背景音乐
- paip.sqlite 管理最好的工具 SQLite Expert 最佳实践总结
- 【POJ2752】Seek the Name, Seek the Fame(hash)
- centos7恢复mysql数据库_MySQL数据库之Centos7.3,mysql5.7环境,数据存储空间加大调整方案...
- 关于最近几次给客户做系统 DEMO的感悟总结
- 斐讯K2路由器刷固件实现校园网可使用
- Linux-----信号量
- extmail mysql数据库 重启_一个简单的基于postfix+extmail+mysql的邮件系统
- html页面实现pdf打印预览,利用pdfjs在线预览、打印pdf
- java文字段落排版,文字排版相关
- 热点讨论:IT人,40岁以后能干什么?
- 电影:少年派的奇幻漂流(Life of Pi)
- 【微前端】微前端——功能团队中缺失的一块拼图
- Vue中:error ‘XXXXX‘ is not defined no-undef解决办法
- 已解决pandas创建DataFrame对象失败