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

2024-01-22 08:30

本文主要是介绍Maven之自定义archetype生成项目骨架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://blog.csdn.net/sxdtzhaoxinguo/article/details/46895013
摘要:使用过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



==============参考二=================================

http://www.tuicool.com/articles/Bruu2a

Maven插件之maven-archetype-plugin

学过Maven的人,都知道用MyEclipse的Maven插件生成一个项目骨架,比如maven-archetype-quickstart,这个原型就是最常用的之一。

刚开始使用骨架的时候,感觉很好,减少了重复劳动,提高了开发效率。使用的时间久了,就会发现,Maven Archetype提供的项目骨架不能百分百的满足公司规定的项目结构,不免要手动改些东西。

此时,自然而然的就会想到:如果能将公司(或项目组)规定的项目结构作为一个 骨架原型 上传个私服,作为模版供项目使用,就无须修改任何的文件。也减少了项目环境搭建时间、降低了出错率等。

 

简单的创建和使用maven-archetype-plugin的方法,可参考:http://www.colorfuldays.org/tag/archetype/   写的简单,但是说的很明白。

1、 进入模版项目的根目录,执行命令:mvn archetype:create-from-project

生成以该项目为模版的项目原型(archetype),具体的项目结构在target/generated-sources目录下;

注意:生成的archetype包含模板项目中所有的文档,避免冗余,可将多余文件删除,并对其项目结构做一些整理!!!

a、修改archetype目录下pom.xml,将archetype的名称修改成你喜欢的;

b、可将文件夹改成_rootArtifactId_,这样生成项目结构时,这个目录名称就会变成新的项目名称了;

这些都整理好了之后,可以将其发布到nexus仓库供其它同事使用了,发布的方法如下:

2 、在archetype目录下的pom.xml中添加maven仓库配置:

<distributionManagement>

<repository>

<id>releases</id>

<url>http://192.168.10.254:8081/nexus/content/repositories/releases</url>

</repository>

<snapshotRepository>

<id>snapshots</id>

<url>http://192.168.10.254:8081/nexus/content/repositories/snapshots</url>

</snapshotRepository>

</distributionManagement>

 

3 、发布archetype, 到${basedir}/target/generated-sources/archetype目录下, 执行命令:

mvn deploy

 

4 、使用该原型创建新项目, 任意目录下执行 命令:

mvn archetype:generate -DarchetypeGroupId=com.ktr -DarchetypeVersion=1.0 -DarchetypeArtifactId=ktr-archetype

注:表格的内容为转载。

以上的方法基于私服(Nexus),如果没有私服,可以参考http://maven.apache.org/archetype/maven-archetype-plugin/advanced-usage.html

详细介绍了如何快速创建和使用Archetype。

 

 

(最佳实践)

实际应用中,项 目组(或者部门/公司)会有自己的私服,因此以下的介绍前提条件是配有自己的私服。

第一步 : 选择模版项目,生成原型。

选择生成Archetype的模板项目,运行命令: mvn clean archetype:create-from-project

命令参数可参考 http://maven.apache.org/archetype/maven-archetype-plugin/create-from-project-mojo.html

但实际应用中,模板项目选好后,一般无须指定任何参数。

此时项目的Archetype已经生成,位于${basedir}/target/generated-sources/archetype/目录下。

 

第二步: 将Archetype上传到私服,共享给其他人使用(需要有deploy权限和scm配置)。

到${basedir}/target/generated-sources/archetype/目录下执行命令: mvn deploy

将该原型上传到私服,此时前期工作完成,以后可以使用该原型生成项目骨架。

 

第三步: 使用Archetype生成项目骨架。

任意目录下,执行命令:

mvn archetype:generate

-DinteractiveMode=false

-DarchetypeCatalog=internal,remote

-DarchetypeRepository=http://172.24.2.22:9081/nexus/content/groups/public

-DarchetypeGroupId=com. ktr

-DarchetypeArtifactId= java-project- template-archetype

-DarchetypeVersion=1.1-SNAPSHOT

-DgroupId=com. ktr

-DartifactId= ktr-t

-Dversion= 0 .1-SNAPSHOT

-Dgoals=compile

(命令应该在一行,为了方便查看,故分开多行)

命令 参数的详细说明:

http://maven.apache.org/archetype/maven-archetype-plugin/generate-mojo.html


interactiveMode : 交互模式,默认为true,在交互模式下运行命令,要求用户指定选用的原型,以及生成项目模版的groupId、artifactId、version、package等属性,否则执行失败 ;

archetypeCatalog : Archetype查找规则;

archetypeRepository : 仓库URL地址;不指定,则默认从中央库查找;

archetypeGroupId : 原型的groupId; 默认值为org.apache.maven.archetypes ;

archetypeArtifactId : 原型的artifactId; 默认值为maven-archetype-quickstart ;

archetypeVersion : 原型的version; 默认值为1.0 ;

 

如果 interactiveMode 属性设置为false(或使用Maven参数-B),则为批处理模式。此时需要指定如下参数


groupId : 生成项目的groupId;必选;

artifactId : 生成项目 的artifactId;必选;

version : 生成项目的version; 默认值 1.0 -SNAPSHOT;

package : 生成项目的源码包结构; 默认 值 使用${groupId} ;

basedir : 项目生成的目录;默认值为当前目录;

 

此时,第三步的命令可简化为:

mvn archetype:generate

-DinteractiveMode=false

-DarchetypeGroupId=com. ktr

-DarchetypeArtifactId= java-project- template-archetype

-DarchetypeVersion=1.1-SNAPSHOT

-DgroupId=com. ktr

-DartifactId= ktr-t

 

 

补充说明:

通过MyEclipse的Maven插件生成项目 骨架 时,其直接连接中央库,无法连接私服,因此不能 使用 自定义的项目原型, 而 应该使用 Maven 命令行来 生成 项目 骨架 。

 

参考:

http://www.colorfuldays.org/tag/archetype/

http://maven.apache.org/archetype/maven-archetype-plugin/

http://maven.apache.org/archetype/maven-archetype-plugin/advanced-usage.html

http://maven.apache.org/archetype/maven-archetype-plugin/create-from-project-mojo.html

http://maven.apache.org/archetype/maven-archetype-plugin/generate-mojo.html

http://maven.apache.org/archetype/maven-archetype-plugin/examples/generate-batch.html

http://maven.apache.org/archetype/maven-archetype-plugin/specification/generate.html

http://maven.apache.org/archetype/maven-archetype-plugin/specification/archetype-catalog.html

 


这篇关于Maven之自定义archetype生成项目骨架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/632423

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

MyCat分库分表的项目实践

《MyCat分库分表的项目实践》分库分表解决大数据量和高并发性能瓶颈,MyCat作为中间件支持分片、读写分离与事务处理,本文就来介绍一下MyCat分库分表的实践,感兴趣的可以了解一下... 目录一、为什么要分库分表?二、分库分表的常见方案三、MyCat简介四、MyCat分库分表深度解析1. 架构原理2. 分

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单