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

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

poj 1287 Networking(prim or kruscal最小生成树)

题意给你点与点间距离,求最小生成树。 注意点是,两点之间可能有不同的路,输入的时候选择最小的,和之前有道最短路WA的题目类似。 prim代码: #include<stdio.h>const int MaxN = 51;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int P;int prim(){bool vis[MaxN];

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D