maven自定义archetype

article/2025/10/1 5:28:56

        在开发过程中我们经常会创建一系列结构类似的新项目,这些项目结构和基础配置基本或完全一致,maven就提供了archetype类型来规定新建项目的结构及基础配置,利用archetype就可以快速简单的搭建新项目。

 

        一、创建Maven项目的一般步骤

        一般情况下创建一个maven项目会遵循以下步骤:

        1.选择项目类型,类型为maven项目

 

        2.选择是否跳过使用archetype模板类型创建,这里选择否

 
        3.进入archetype选择界面,这里会列出所有可以使用的archetype类型,选择其中一种,其中maven-archetype-quickstartmaven-archetype-webapp就是我们经常用到的。

 

        在这里列出了所有本机默认或已配置的archetype类型,也可以点击右侧的Configure...按钮可以进入archetype配置界面,或者直接从Preferences也可进入,界面如下:

 

        4.完成创建



 

        二、自己定义archetype

        一般情况下我们使用内置的archetype类型就基本够用了,但是每一个公司或团体都有自己的规范与架构,这时就需要一套符合本地需求的archetype类型配置,所以我们就需要自定义一套archetype。

        创建archetype必须已存在项目为基础,这个项目可以是专门新创建的模板项目,也可以是已发布的存在项目,我们这里已一个新创建的模板项目为例。

        1.首先创建模板项目,将以此项目作为模板创建archetype

 

        2.创建完成后的项目结构如下所示:


        项目创建好之后把你要想作为模板的内容都添加和配置好,无论是java、xml、properties、html等等均可。

 

        3.开始创建archetype配置文件,在父项目(archetype-parent)上右键-->Run As-->Maven build

 

        填入构建参数:archetype:create-from-project,运行即可。

        构建完成后会显示如下类似信息:

......省略
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-archetype-plugin:2.4:jar (default-jar) @ archetype-parent-archetype ---
[INFO] Building archetype jar: D:\workspace_2\archetype-parent\target\generated-sources\archetype\target\archetype-parent-archetype-1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.519 s
[INFO] Finished at: 2018-06-22T18:17:01+08:00
[INFO] ------------------------------------------------------------------------
[INFO] Archetype project created in D:\workspace_2\archetype-parent\target\generated-sources\archetype
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] archetype-parent 1.0-SNAPSHOT ...................... SUCCESS [ 10.438 s]
[INFO] archetype-web ...................................... SKIPPED
[INFO] archetype-biz 1.0-SNAPSHOT ......................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.304 s
[INFO] Finished at: 2018-06-22T18:17:01+08:00
[INFO] ------------------------------------------------------------------------

       

        三 生成archetype

        1.构建成功后会在target目录下生成相关配置文件,如下所示:

 

 

        2.其中archetype的pom.xml与archetype-metadata.xml这两个文件是需要我们根据实际情况进行修改的。

        pom.xml文件原始内容:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.archetype.example</groupId><artifactId>archetype-parent-archetype</artifactId><version>1.0-SNAPSHOT</version><packaging>maven-archetype</packaging><name>archetype-parent-archetype</name><build><extensions><extension><groupId>org.apache.maven.archetype</groupId><artifactId>archetype-packaging</artifactId><version>2.4</version></extension></extensions><pluginManagement><plugins><plugin><artifactId>maven-archetype-plugin</artifactId><version>2.4</version></plugin></plugins></pluginManagement></build>
</project>

        pom文件中groupId、artifactId、version与name这4个属性需要我们进行修改,其中因为我们的项目版本声明的是1.0-SNAPSHOT,所以这里也继承为1.0-SNAPSHOT,需要修改为1.0或其他,否则在生成archetype之后不能直接显示,需要勾选相关选项才行。其他3个属性根据自己的需求修改为合理的即可。

 

        修改完成后如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.archetype.example</groupId><artifactId>example-archetype-web</artifactId><version>1.0</version><packaging>maven-archetype</packaging><name>example-archetype-web</name>...省略
</project>

 

        archetype-metadata.xml文件原始内容:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptorxsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd"name="archetype-parent"xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><fileSets><fileSet encoding="UTF-8"><directory>.settings</directory><includes><include>**/*.prefs</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.project</include></includes></fileSet></fileSets><modules><module id="archetype-web" dir="archetype-web" name="archetype-web"><fileSets><fileSet filtered="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.java</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/main/webapp</directory><includes><include>**/*.xml</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>.settings</directory><includes><include>**/*.xml</include></includes></fileSet><fileSet encoding="UTF-8"><directory>.settings</directory><includes><include>**/*.container</include><include>**/*.component</include><include>**/*.name</include><include>**/*.jsdtscope</include><include>**/*.prefs</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.classpath</include><include>.project</include></includes></fileSet></fileSets></module><module id="archetype-biz" dir="archetype-biz" name="archetype-biz"><fileSets><fileSet encoding="UTF-8"><directory>.settings</directory><includes><include>**/*.prefs</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.classpath</include><include>.project</include></includes></fileSet></fileSets></module></modules>
</archetype-descriptor>

 

        而archetype-metadata.xml文件需要修改的内容就较多了,其中<fileSet>标签的作用就是过滤和包含哪些文件的作用,这里我们直接修改为“全部”即可,如下:

<fileSets><fileSet filtered="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/main/resources</directory><includes><include>**/**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/resources</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.**</include></includes></fileSet>
</fileSets>

 

        修改完成后的archetype-metadata.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptorxsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd"name="archetype-parent"xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><fileSets><fileSet filtered="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/main/resources</directory><includes><include>**/**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/resources</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.**</include></includes></fileSet></fileSets><modules><module id="archetype-web" dir="archetype-web" name="archetype-web"><fileSets><fileSet filtered="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/main/resources</directory><includes><include>**/**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/resources</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.**</include></includes></fileSet></fileSets></module><module id="archetype-biz" dir="archetype-biz" name="archetype-biz"><fileSets><fileSet filtered="true" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/main/resources</directory><includes><include>**/**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/java</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory>src/test/resources</directory><includes><include>**/*.**</include></includes></fileSet><fileSet filtered="true" encoding="UTF-8"><directory></directory><includes><include>.**</include></includes></fileSet></fileSets></module></modules>
</archetype-descriptor>

 

        3.安装archetype

        pom与archetype-metadata.xml两个文件修改完成后,进入到target\generated-sources\archetype目录下执行构建命令:

mvn install

 

        构建完成后显示类似信息:

...省略
[INFO] Installing D:\workspace_2\archetype-parent\target\generated-sources\archetype\pom.xml to C:\Users\Administrator\.
m2\repository\com\archetype\example\example-archetype-web\1.0\example-archetype-web-1.0.pom
[INFO]
[INFO] --- maven-archetype-plugin:2.4:update-local-catalog (default-update-local-catalog) @ example-archetype-web ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 31.300 s
[INFO] Finished at: 2018-06-25T11:44:43+08:00
[INFO] Final Memory: 16M/114M
[INFO] ------------------------------------------------------------------------

 

        构建成功后我们的仓库目录下的archetype-catalog.xml文件会将此archetype添加,出现以下内容说明添加成功。内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalogxsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><archetypes><archetype><groupId>com.archetype.example</groupId><artifactId>example-archetype-web</artifactId><version>1.0</version><description>example-archetype-web</description></archetype></archetypes>
</archetype-catalog>

        archetype-catalog.xml所在位置为:maven仓库位置\archetype-catalog.xml(我这里为:C:\Users\Administrator\.m2\archetype-catalog.xml)。

        构建成功之后我们就可以在创建Maven项目的时候选择这个模板来创建新项目了,如下所示:

 

 

        三、上传archetype至nexus私服

        有些公司或团体会提供自己的私服,如果将自定义的archetype上传至私服将给使用者带来极大的便利。

        1.打开nexus服务器主页

        进入主页后,点击右上角“Log In”按钮进行登录:

 

        2.上传

        选择合适的Repositories,我这里选择了3rd party,然后点击上传:


        然后选择pom类型上传,选择本地仓库中的pom文件,如下:


        最后选择jar文件,并上传:


        上传成功后会在私服的根目录下的archetype-catalog.xml中添加该archetype,内容类似于我们本地仓库。


        通过链接或者download按钮可以获取该文件的内容及地址,我这里为:http://nexus.example.com/nexus/service/local/repositories/thirdparty/content/archetype-catalog.xml

        3.Eclipse中添加archetype类型

        打开Eclipse的Maven配置页,点击Add Remote Catalog按钮,添加远程archetype配置,如下所示:


        验证并添加完成后会在archetypes列表中显示这个远程配置信息,如下:

        至此所有配置完成可以使用了。


http://chatgpt.dhexx.cn/article/fNKr9ar6.shtml

相关文章

自定义Maven Archetype模板工程

文章目录 Maven Archetype介绍什么是Maven Archetype为什么要有模板工程创建模板工程的三种方式 常用的archetypemaven-archetype-quickstartmaven-archetype-webapp 自定义一个Maven模板工程生成模板上传模板到仓库(此步骤可选) 使用模板工程 源码地址&#xff1a;https://git…

如何选择创建Maven的archetype

前言&#xff1a; 在使用IDEA的Maven插件创建我们的maven项目时提供了如图所示的原型&#xff0c;为我们快速创建合适的项目提供了很大的帮助。下面我们将详细介绍各个archetype。 官网对archetype(原型)的介绍&#xff1a; http://maven.apache.org/guides/introduction/in…

Maven model archetype说明

前言 新建一个model&#xff0c;其中有一个选项“Create from archetype”感觉很奇怪&#xff0c;我就来了解一下这些内容&#xff0c;做一下笔记&#xff0c; 什么是Archetype Archetype翻译过来就是&#xff1a;骨架&#xff0c;项目工程骨架。 Archetype是Maven工程的模板…

Maven自定义Archetype项目模板

前言&#xff1a;在某课网上学习到可以使用命令mvn archetype:create-from-project来创建自己的项目模板&#xff08;文中提及的项目模板即 原型 archetype&#xff09;&#xff0c;对此我十分感兴趣。但是&#xff0c;遗憾的是&#xff0c;老师没有介绍如何去构建这样一个特殊…

Maven-Archetype Catalog

当用户以不指定Archetype坐标的方式使用maven-archetype-plugin的时候&#xff0c;会得到一个Archetype列表供选择&#xff0c;这个列表的信息来源于一个名为archetype-catalog.xml的文件&#xff0c;如&#xff1a; archetype-catlog.xml能提供Archetype的信息&#xff0c;那么…

Idea archetype介绍

一、背景 Idea创建项目时&#xff0c;被一堆archetype混淆视听&#xff0c;犹豫不决决定彻底弄懂他 1.关键词 Archetype: 骨架Maven: Java代码编译时的一个工具&#xff08;软件讲究运行时、和编译时两种状态&#xff09; 2.网友介绍 Archetype是Maven工程的模板工具包。一…

Maven Archetype

目录 Maven Archetype工程结构创建Maven Archetype创建支持生成多模块的Maven Archetype在idea中添加自定义Maven Archetype 最开始接触到maven archetype&#xff0c;是在通过idea创建project时&#xff0c;可以选择Maven -> Create from archetype&#xff0c; 在输入proj…

自定义idea archetype

编写 archetype 元数据 通过plugin从现有项目中导出 1、引入plugin <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-archetype-plugin</artifactId><version>3.2.0</version></plugin>2、通过maven…

Maven 三种archetype说明

新建Maven project项目时,需要选择archetype。 那么,什么是archetype? archetype的意思就是模板原型的意思,原型是一个Maven项目模板工具包。一个原型被定义为从其中相同类型的所有其它事情是由一个原始图案或模型。名称配合,因为我们正在努力提供一种系统,该系统提供了…

maven中archetype(原型)的使用及创建

当我们在idea中创建项目时&#xff0c;经常会见到如下界面选择&#xff1a; archetype也就是原型&#xff0c;准确说是一个项目模板&#xff0c;我们可以根据该模板来生成项目。 我就不介绍图形界面的创建方式了&#xff0c;一步一步太啰嗦了&#xff0c;我们用命令方式创建。…

创建自定义的archetype(项目模板)

一、archetype简介 Archetype是一个Maven项目的模板工具包&#xff0c;它定义了一类项目的基本架构。Archetype为开发人员提供了创建Maven项目的模板&#xff0c;同时它也可以根据已有的Maven项目生成参数化的模板。通过archetype&#xff0c;开发人员可以很方便地将一类项目的…

Maven创建时archetype的选择说明

新建Maven project项目时&#xff0c;需要选择archetype。 那么&#xff0c;什么是archetype&#xff1f; archetype的意思就是模板原型的意思&#xff0c;原型是一个Maven项目模板工具包。一个原型被定义为从其中相同类型的所有其它事情是由一个原始图案或模型。名称配合&am…

Maven的Archetype简介

简单的说&#xff0c;Archetype是Maven工程的模板工具包。一个Archetype定义了要做的相同类型事情的初始样式或模型。这个名称给我们提供来了一个一致的生成Maven工程的方式。Archetype会帮助作者给用户创建Maven工程模板&#xff0c;并给用户提供生成相关工程模板版本的参数化…

c语言学习--强制类型转换

C语言中关于强制类型转换问题 由于朋友问到&#xff0c;所以整理了一份&#xff0c;若关于一些认识有错误还望指出...... ● 如果一个运算符两边的运算数类型不同&#xff0c;先要将其转换为相同的类型&#xff0c;即较低类型转换为较高类型&#xff0c;然后再参加运算&#xf…

列举三种强制类型转换

1 强制类型转换—String 这里主要列举了两种强制转换为字符串类型的方法&#xff0c;我们也在log控制台中验证了新的类型。 但是注意&#xff1a;null 和 undefined 这两个值没有 toString()方法。 2 强制类型转换—Number 这里我为大家列举了三种方法&#xff0c;但是注意后…

C语言(强制类型转换)

一.类型转换原则 1.升级&#xff1a;当类型转换出现在表达式时&#xff0c;无论时unsigned还是signed的char和short都会被自动转换成int&#xff0c;如有必要会被转换成unsigned int(如果short与int的大小相同&#xff0c;unsigned short就比int大。这种情况下&#xff0c;uns…

如何进行强制类型转换?

1、自动类型转换 自动类型转换就是编译器默默地、隐式地、偷偷地进行的数据类型转换&#xff0c;这种转换不需要程序员干预&#xff0c;会自动发生。 1) 将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型转换&#xff0c;例如&#xff1a; float f 100; 100 是 i…

Java中的强制类型转换

尽管自动类型转换是很方便的&#xff0c;但并不能满足所有的编程需要。 例如&#xff0c;当程序中需要将 double 型变量的值赋给一个 int 型变量&#xff0c;该如何实现呢&#xff1f; 显然&#xff0c;这种转换是不会自动进行的&#xff01;因为 int 型的存储范围比 doub…

C++的四种强制类型转换

目录 1、C语言中的类型转换 2、为什么C需要四种类型转换 3、C强制类型转换 static_cast reinterpret_cast const_cast dynamic_cast 4、RTTI&#xff08;了解&#xff09; 5、常见面试题 1、C语言中的类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#…

Java中强制类型转换

Java中强制类型转换 一、整型强转 类型转换都是小范围向大范围转换的&#xff0c;大范围往小范围转化需要用到强制转换&#xff0c;转换后的值会有所损失。 不同数据类型精度由小到大排列如下&#xff1a;char-->byte --> short --> int --> long --> float --…