写在前面:

  • 你好,欢迎关注!
  • 我热爱技术,热爱分享,热爱生活, 我始终相信:技术是开源的,知识是共享的!
  • 博客里面的内容大部分均为原创,是自己日常的学习记录和总结,便于自己在后面的时间里回顾,当然也是希望可以分享 自己的知识。如果你觉得还可以的话不妨关注一下,我们共同进步!
  • 个人除了分享博客之外,也喜欢看书,写一点日常杂文和心情分享,如果你感兴趣,也可以关注关注!
  • 公众号:傲骄鹿先生

目录

一、关于Archetype的理解

二、使用archetype创建项目

三、生成自定义archetype

四、使用自定义archetype

五、上传archetype到私服


一、关于Archetype的理解

Archetype是一个Maven项目的模板工具包,它定义了一类项目的基本架构。Archetype为开发人员提供了创建Maven项目的模板,同时它也可以根据已有的Maven项目生成参数化的模板。通过archetype,开发人员可以很方便地将一类项目的最佳实现应用到自己的项目中。在一个Maven项目中,开发者可以通过archetype提供的范例快速入门并了解该项目的结构与特点。

maven提供了一些官方的archetype给开发者使用,主要如下:

  • maven-archetype-quickstart
  • maven-archetype-simple
  • maven-archetype-webapp

1、maven-archetype-quickstart

  • 默认的Archetype,基本内容包括:
  • 一个包含junit依赖声明的pom.xml
  • src/main/java主代码目录及一个名为App的类
  • src/test/java测试代码目录及一个名为AppTest的测试用例

2、maven-archetype-webapp
一个最简单的Maven war项目模板,当需要快速创建一个Web应用的时候可以使用它。生成的项目内容包括:

  • 一个packaging为war且带有junit依赖声明的pom.xml
  • src/main/webapp/目录
  • src/main/webapp/index.jsp文件
  • src/main/webapp/WEB-INF/web.xml文件

当然了,除此之外还有其他的一些Maven工程模板,并给用户提供生成相关工程模板版本的参数化方法。

我们在创建一个maven项目的时候会出现一个如下的界面:

maven提供的模板:

1:appfuse-basic-jsf (创建一个基于Hibernate,Spring和JSF的Web应用程序的原型)
2: appfuse-basic-spring(创建一个基于Hibernate,Spring和Spring MVC的Web应用程序的原型)
3: appfuse-basic-struts(创建一个基于Hibernate,Spring和Struts 2的Web应用程序的原型)
4: appfuse-basic-tapestry(创建一个基于Hibernate,Spring 和 Tapestry 4的Web应用程序的原型)
5: appfuse-core(创建一个基于Hibernate,Spring 和 XFire的jar应用程序的原型)
6: appfuse-modular-jsf(创建一个基于Hibernate,Spring和JSF的模块化应用原型)
7: appfuse-modular-spring(创建一个基于Hibernate, Spring 和 Spring MVC 的模块化应用原型)
8: appfuse-modular-struts(创建一个基于Hibernate, Spring 和 Struts 2 的模块化应用原型)
9: appfuse-modular-tapestry (创建一个基于 Hibernate, Spring 和 Tapestry 4 的模块化应用原型)
10: maven-archetype-j2ee-simple(一个简单的J2EE的Java应用程序)
11: maven-archetype-marmalade-mojo(一个Maven的 插件开发项目 using marmalade)
12: maven-archetype-mojo(一个Maven的Java插件开发项目)
13: maven-archetype-portlet(一个简单的portlet应用程序)
14: maven-archetype-profiles()
15:maven-archetype-quickstart()
16: maven-archetype-site-simple(简单的网站生成项目)
17: maven-archetype-site(更复杂的网站项目)
18:maven-archetype-webapp(一个简单的Java Web应用程序)
19: jini-service-archetype(Archetype for Jini service project creation)
20: softeu-archetype-seam(JSF+Facelets+Seam Archetype)
21: softeu-archetype-seam-simple(JSF+Facelets+Seam (无残留) 原型)
22: softeu-archetype-jsf(JSF+Facelets 原型)
23: jpa-maven-archetype(JPA 应用程序)
24: spring-osgi-bundle-archetype(Spring-OSGi 原型)
25: confluence-plugin-archetype(Atlassian 聚合插件原型)
26: jira-plugin-archetype(Atlassian JIRA 插件原型)
27: maven-archetype-har(Hibernate 存档)
28: maven-archetype-sar(JBoss 服务存档)
29: wicket-archetype-quickstart(一个简单的Apache Wicket的项目)
30: scala-archetype-simple(一个简单的scala的项目)
31: lift-archetype-blank(一个 blank/empty liftweb 项目)
32: lift-archetype-basic(基本(liftweb)项目)
33: cocoon-22-archetype-block-plain([http://cocoapacorg2/maven-plugins/])
34: cocoon-22-archetype-block([http://cocoapacorg2/maven-plugins/])
35:cocoon-22-archetype-webapp([http://cocoapacorg2/maven-plugins/])
36: myfaces-archetype-helloworld(使用MyFaces的一个简单的原型)
37: myfaces-archetype-helloworld-facelets(一个使用MyFaces和Facelets的简单原型)
38: myfaces-archetype-trinidad(一个使用MyFaces和Trinidad的简单原型)
39: myfaces-archetype-jsfcomponents(一种使用MyFaces创建定制JSF组件的简单的原型)
40: gmaven-archetype-basic(Groovy的基本原型)
41: gmaven-archetype-mojo(Groovy mojo 原型)

二、使用archetype创建项目

通常我们在创建一个maven项目的时候会使用idea界面窗口去创建,创建时选择一个模板即可,操作简单。

在下面的例子中,我们将在 E:\Maven 文件夹下创建一个基于 maven 的 java 应用项目。命令格式如下:

mvn archetype:generate -DgroupId=com.setalone -DartifactId=ArchetypeTest -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

参数说明:

  • -DgourpId: 组织名,公司网址的反写 + 项目名称
  • -DartifactId: 项目名-模块名
  • -DarchetypeArtifactId: 指定 ArchetypeId,maven-archetype-quickstart,创建一个简单的 Java 应用
  • -DinteractiveMode: 是否使用交互模式

项目创建完成后在idea中打开可以看到如下的目录结构:

三、生成自定义archetype

创建maven项目,每次都要选择一个骨架,总有一部分东西是我们不需要的,有时候创建项目时选择了一个骨架,用的时候,需要删删减减的,解决办法就是创建一个自己的自定义骨架,每次创建maven的时候,就使用自己的骨架,相对方便多了。

archetype自定义的优势:

  • 可以集成公共的开发组件,提高开发效率。公司内部对中间件的封装,可以集成进来;开源社区的优质轮子,可以集成进来。这样,项目可以有大量的优秀组件,避免重复造轮子。另外,如果需要创建新项目,可以一键生成,不必在复制一个项目,更改项目名,删减代码之类的。
  • 项目风格统一,便于统一维护。试想,同一个archetype生成的项目,无论是项目结构,还是项目依赖的组件,应该都是类似的。如果有新的开发同学进入项目,熟悉了某个项目,其它项目除了业务逻辑,基本上不需要理解成本。

1、在IDEA中进行自定义archetype

在创建好的项目ArchetypeTest的pom文件中添加标签:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-archetype-plugin</artifactId><version>3.1.1</version>
</plugin>

archetype:create-from-project,执行maven 命令

archetype:create-from-project命令执行完之后,项目会生成target目录文件,至此,骨架相当于已经生成,但是需要安装,还需要把骨架添加到maven中。

选择target文件执行install命令

命令执行完成后打印日志在控制台,如图所示的地址是在本地仓库中生成xml文件的地址

Installing E:\Maven\ArchetypeTest\target\generated-sources\archetype\target\ArchetypeTest-archetype-1.0-SNAPSHOT.jar to D:\maven_repository\com\setalone\ArchetypeTest-archetype\1.0-SNAPSHOT\ArchetypeTest-archetype-1.0-SNAPSHOT.jar
Installing E:\Maven\ArchetypeTest\target\generated-sources\archetype\pom.xml to D:\maven_repository\com\setalone\ArchetypeTest-archetype\1.0-SNAPSHOT\ArchetypeTest-archetype-1.0-SNAPSHOT.pom

执行archetype:crawl命令

到此骨架生成,我们还需要将骨架加入到maven中去。

重新创建一个maven项目的时候选择Add Archetype,依次填入Groupld,ArtifactId,Version。

点击ok即可选择自定义Archetype了。

2、在cmd窗口中进行自定义archetype

在idea中创建自定义archetype时也是使用了maven命令进行创建的,所以在cmd窗口中,我们也只需要切换的自行创建的maven项目的对应目录下执行maven命令即可进行创建,在这里不做演示了。

四、使用自定义archetype

执行mvn archetype:generate -DarchetypeCatalog=local从本地archeType模板中创建项目。

 mvn archetype:generate -DarchetypeCatalog=local

然后会让你选择模板序号和groupId``artifactId``versionpackage信息:

当然,也可以使用IDEA来帮我们用图形界面使用archeType模板创建项目。

五、上传archetype到私服

上传archetype到私服的操作将在后续的内容中详细进行说明,后续会更新《Nexus环境搭建、上传配置》。

架构师工具箱(二)Maven——Maven生成Archetype相关推荐

  1. 关于前端架构师的二三事

    为什么要有前端架构师 任何一种岗位的诞生, 都源于问题规模的膨胀 前端工程师的诞生, 就源于 web 开发这个问题规模的膨胀, 早期的网络程序员, 和现在的全栈工程师具有类似的属性, 唯一的区别是处理 ...

  2. JavaEE 企业级分布式高级架构师(二十)RocketMQ学习笔记(2)

    RocketMQ学习笔记 进阶篇 消息样例 普通消息 消息发送 发送同步消息 发送异步消息 单向发送消息 三种发送方式的对比 消费消息 顺序消息 如何保证顺序 顺序的实现 MessageListene ...

  3. 菜鸟要做架构师(二)——java性能优化之for循环

    完成同样的功能,用不同的代码来实现,性能上可能会有比较大的差别,所以对于一些性能敏感的模块来说,对代码进行一定的优化还是很有必要的.今天就来说一下java代码优化的事情,今天主要聊一下对于for(wh ...

  4. 从菜鸟到架构师(二)

    时间如梭,在经历短暂的国庆休整之后,我踏上了我的大学之路. 记得那是金秋的一个上午,我坐着我干爹的车,来到了位于成都彭州市的西华大学应用技术学院.踏入大学校园的那一刻,我停止了呼吸,心里想着:这就是大 ...

  5. IT架构师介绍-软件架构设计学习第一天(非原创)

    文章大纲 一.架构师定义 二.架构师分类与具备能力 三.研发人员发展的技术路线 四.架构师知识体系 五.参考文章 一.架构师定义   什么是架构师,这个聊架构话题时永恒的问题.每个公司对架构师的定位也 ...

  6. 【软考系统架构设计师】2009年下系统架构师论文写作历年真题

    [软考系统架构设计师]2009年下系统架构师论文写作历年真题 2009年下系统架构师论文写作历年真题 [软考系统架构设计师]2009年下系统架构师论文写作历年真题 2009年下系统架构师试题一(DSS ...

  7. 【软考系统架构设计师】2014年下系统架构师论文写作历年真题

    [软考系统架构设计师]2014年下系统架构师论文写作历年真题 2014年下系统架构师论文写作历年真题 [软考系统架构设计师]2014年下系统架构师论文写作历年真题 2014年下系统架构师试题一(需求管 ...

  8. 你成为不了架构师的原因!!!

    今天接到一个哥们儿的电话,说,很郁闷,想和我聊聊. 我问,有啥郁闷的事情啊,说来听听. 他说,最近很郁闷,我本来今年的计划是成为一个架构师,但是,无论如何努力,都不知道为什么,感觉希望很渺茫- 这哥们 ...

  9. 为什么你总成为不了架构师?

    背景:  今天接到一个哥们儿的电话,说,很郁闷,想和我聊聊.  我问,有啥郁闷的事情啊,说来听听.  他说,最近很郁闷,我本来今年的计划是成为一个架构师,但是,无论如何努力,都不知道为什么,感觉希望很 ...

最新文章

  1. Leetcode Permutation Sequence
  2. 第一个Node.js实例
  3. python语言基础与应用 mooc答案_Python语言基础与应用_中国大学mooc慕课_期末考试选修课答案...
  4. solr从数据库为solr_home导入数据
  5. java抽象类与接口5.4-5.7 2020.3.31
  6. Centos7 更新gcc版本
  7. Storm精华问答 | 如何理解spout/bolt的生命周期?
  8. php自动合并,php实现合并数组并去除重复的方法
  9. 还看不懂同事的代码?Lambda 表达式、函数接口了解一下
  10. Container ViewController自定义转场控制器。
  11. 迷你世界电锯机器人_迷你世界:石像机器人升级版,制作如此简单!
  12. Membership三步曲之入门篇 - Membership基础示例
  13. 如何实现用Delphi访问Outlook Express的收发邮件箱中的邮件?
  14. 项目搭建系列之一:使用Maven搭建SpringMVC项目
  15. vi单文件操作常用命令
  16. jquery所有版本下载
  17. struct vsf_sysutil_statbuf
  18. 【微信小程序】(一)开发工具下载与界面介绍
  19. title和alt属性有什么作用?
  20. 向ftp上传文件失败的可能原因

热门文章

  1. 滴滴打车交互设计详细分析
  2. RGH reset glitch hack
  3. python dill包_Python脚本卡在dill.dump()上
  4. 接单平台强烈推荐汇总
  5. ABT 节点安装使用 Blocklet 指南 | ArcBlock 博客
  6. ION-DTN设计原则
  7. unity 实现帧同步
  8. POJ 2343 Airline company [DFS编号]
  9. 遗传算法(Genetic algorithm,GA)前世今生(python实现)
  10. 支付宝担保交易收款接口使用