架构师工具箱(二)Maven——Maven生成Archetype

写在前面:

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

目录

一、关于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环境搭建、上传配置》。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章