Maven之自定义archetype生成项目骨架(一)

2018-01-25 15:36:31

摘要:使用过Maven的人都知道maven中有许多功能都是通过插件来提供的,今天我们来说一下其中的一个插件:maven-archetype-plugin

,通过该插件可以自定义符合我们自己需求的archetype。


一:什么是Archetype

总之,原型是一个Maven项目模板工具包。一个原型被定义为从其中相同类型的所有其它事情是由一个原始图案或模型。名称配合,因为我们正在努力提供一种系统,该系统提供了一种生成Maven项目的一致的手段。原型将帮助作者为用户创建Maven项目模板,并为用户提供了手段,产生的这些项目模板参数化的版本。


使用原型提供了一个很好的方式,迅速使开发人员在与您的项目或组织采用最佳实践一致的方法。在Maven的项目中,我们使用原型,试图让我们的用户和运行尽可能快地通过提供展示许多的Maven的功能,同时引入新的用户通过采用Maven的最佳实践的示例项目。在几秒钟内一个新的用户可以有一个工作Maven项目作为跳板用于调查更多的功能,Maven中。我们也试图使原型机制添加剂和由我们的意思是允许一个项目的一部分被捕获在一个原型,使得项目的部件或方面可以被添加到现有的项目。这方面的一个很好的例子是Maven站点原型。如果,例如,您使用的快速启动原型生成一个工作项目,你可以迅速通过使用现有项目中的网站原型创建网站的项目。你可以做这样的事与原型。


您可能要在组织内部规范J2EE开发,所以你可能要提供原型为EJB,或者,或者您的Web服务的战争。一旦这些原型创建和部署在您的组织的资源库,他们都可以在组织内使用的所有开发人员。


上面是我根据maven官网在百度翻译出来的,大家将就着看,大概意思就是archetype是Maven项目模板工具包,也就是一个模板工程。


二:使用archetype创建项目


[html] view plain copy

  1. mvn archetype:generate  


上面的命令执行后会输出很多maven官方提供的archetype,但是这些archetype生成的项目骨架都不能够满足我们的需求,所以这就需要我们自己开发一个archetype来满足我们自己的开发需求,下面我把我自己自定义这个archetype的过程记录一下方便日后回忆。



三:创建自定义的archetype项目

1.首先使用sts(spring的一款开发工具,下载地址到spring官网)创建一个maven project,然后把配置好的一些公用的东西放到相应的目录下面比如说会将一些常用的java代码存放到src/main/java目录下面;会将一些通用的配置文件放到src/main/resources目录下面;如果是javeEE工程,还会有一些jsp等等的文件存放到src/main/webapp目录下面,如下图所示:



2.然后在创建的maven project的pom.xml文件中添加archetype插件,如下面所示:


[html] view plain copy

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  

  3.     <modelVersion>4.0.0</modelVersion>  

  4.   

  5.     <parent>  

  6.         <groupId>org.micaicms</groupId>  

  7.         <artifactId>micaicms-pom</artifactId>  

  8.         <version>1.0</version>  

  9.     </parent>  

  10.   

  11.     <artifactId>micaicms-web-archetype</artifactId>  

  12.     <packaging>jar</packaging>  

  13.   

  14.     <name>micaicms web archetype</name>  

  15.     <description>micaicms-web-archetype</description>  

  16.   

  17.     <distributionManagement>  

  18.         <repository>  

  19.             <id>releases</id>  

  20.             <name>Micaicms Releases</name>  

  21.             <url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url>  

  22.         </repository>  

  23.         <snapshotRepository>  

  24.             <id>snapshots</id>  

  25.             <name>Micaicms Releases</name>  

  26.             <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>  

  27.         </snapshotRepository>  

  28.     </distributionManagement>  

  29.   

  30.     <build>  

  31.         <pluginManagement>  

  32.             <plugins>  

  33.                 <plugin>  

  34.                     <groupId>org.apache.maven.plugins</groupId>  

  35.                     <artifactId>maven-archetype-plugin</artifactId>  

  36.                     <version>2.2</version>  

  37.                 </plugin>  

  38.                 <plugin>  

  39.                     <groupId>org.apache.maven.plugins</groupId>  

  40.                     <artifactId>maven-compiler-plugin</artifactId>  

  41.                     <configuration>  

  42.                         <source>1.5</source>  

  43.                         <target>1.5</target>  

  44.                     </configuration>  

  45.                 </plugin>  

  46.                 <plugin>  

  47.                     <groupId>org.apache.maven.plugins</groupId>  

  48.                     <artifactId>maven-resources-plugin</artifactId>  

  49.                     <configuration>  

  50.                         <encoding>UTF-8</encoding>  

  51.                     </configuration>  

  52.                 </plugin>  

  53.             </plugins>  

  54.         </pluginManagement>  

  55.     </build>  

  56.   

  57. </project>  




3.运行你自己配置好的自定义的archetype项目

先执行mvn clean install
安装该archetype项目到你的本地仓库

发布该archetype项目到你的本地私服(nexus)

注意;这里如果你需要发布这个archetype到你的本地私服上去,那么需要在maven里面配置权限,主要是maven里面的settings.xml文件,我
的settings.xml文件配置如下,配置好以后就可以执行发布命令了


再执行mvn deploy

4.查看你刚才发布到nexus私服上去的archetype,如下图:




四:在eclipse/sts开发工具中配置你发布到私服上的自定义的archetype

1.打开你的开发工具,eclipse或者sts,我这里是sts


2.选择Window->Preferences->Maven->Archetypes


3.点击Add Remote Catalog,输入你的nexus私服中archetype的地址,我这里是
http://127.0.0.1:8081/nexus/content/groups/public/archetype-catalog.xml
输入Description,随便输入都可以,我这里是micaicms-web-archetype


4.点击Ok,点击Apply


5.重新启动你的开发工具eclipse或者sts


五:使用自定义的archetype生成自定义的项目骨架

1.选择New->Maven Project->Next


2.选择你配置好的archetype,如下图:



3.输入对应的groupId,artifactId,package,如下图:
因为我已经新建过该项目了,所以我这里不能点击Finish,你们的应该可以



4.最后生成的项目骨架如下图:



5.修改数据库配置文件,导入初始化sql脚本,如下图:



6.部署项目到tomcat下面访问即可,默认的访问路径为:ht:tp://localhost:8080/micaicms-ssmb/project/list


六:Maven的自定义archetype源码工程下载地址:

https://github.com/sxdtzhaoxinguo/micaicms-web-archetype


七:Maven的自定义archetype生成的基础项目骨架工程的下载地址:

https://github.com/sxdtzhaoxinguo/micaicms-ssmb


  • 2017-09-11 16:15:11

    Nginx日志管理

    通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的信息。

  • 2017-09-11 16:34:14

    Nginx如何保留真实IP和获取前端IP

    squid,varnish以及nginx等,在做反向代理的时候,因为要代替客户端去访问服务器,所以,当请求包经过反向代理后,在代理服务器这里这个IP数据包的IP包头做了修改,最终后端web服务器得到的数据包的头部的源IP地址是代理服务器的IP地址,这样一来,后端服务器的程序给予IP的统计功能就没有任何意义,所以在做代理或集群的时候必须解决这个问题,这里,我以nginx做集群或代理的时候如何给后端web服务器保留(确切的说是传递)客户端的真实IP地址。

  • 2017-09-11 16:35:22

    ngx_http_realip_module使用详解

    网络上关于ngx_http_realip_module的文章千篇一律,全是在说怎么安装,最多贴一个示例配置,却没有说怎么用,为什么这么用,官网文档写得也十分简略,于是就自己探索了一下。

  • 2017-09-11 16:39:43

    基于Nginx dyups模块的站点动态上下线

    在分布式服务下,我们会用nginx做负载均衡, 业务站点访问某服务站点的时候, 统一走nginx, 然后nginx根据一定的轮询策略,将请求路由到后端一台指定的服务器上。

  • 2017-09-13 13:49:21

    Web性能测试:工具之Siege详解

    Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力。可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。siege可以从您选择的预置列表中请求随机的URL。所以siege可用于仿真用户请求负载,而ab则不能。但不要使用siege来执行最高性能基准调校测试,这方面ab就准确很多

  • 2017-09-14 10:18:25

    15分钟成为Git专家

    不管是以前使用过 Git 还是刚开始使用这个神奇的版本控制工具的开发者,阅读了本文以后都会收获颇丰。如果你是应一名有经验的 GIT 使用者,你会更好的理解 checkout -> modify -> commit 这个过程。如果你刚开始使用 Git,本文将给你一个很好的开端。

  • 2017-09-28 16:42:57

    Linux vmstat命令实战详解

    vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。