【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架

简介: 【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架

技术推荐


自定义Archetype Maven骨架/以当前项目为模板创建maven骨架,可以参考maven.apache.org/archetype/m…



技术背景


  • 在工作过程中必然会遇到创建项目的蛋疼事,一个项目包含茫茫多的配置文件。例如:Spring、mybatis、log4j、pom.xml、git等,其他的还包括项目目录骨架。整个过程下来顺利的话几十分钟,如果对公司项目配置不了解的情况下,几个小时都是有可能的。


  • maven的强大就不言而喻了,自定义项目骨架主要利用到 archetype插件。在IDE中创建maven项目时,可以选择archetype类型快速创建项目目录。例如最常见的maven-archetype-plugin 的quickstart。maven考虑到通用性,提供的是最简单的目标。


  • 新建项目时,配置文件往往是从其他项目拷贝过来的,拷贝的问题在于很容易踩坑,并且不容易定位问题。利用maven一键生成项目骨架可以解决所有的问题。



什么是Archetype


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


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


您可能要在组织内部规范J2EE开发,所以你可能要提供原型为EJB,或者,或者您的Web服务的战争。


一旦这些原型创建和部署在您的组织的资源库,他们都可以在组织内使用的所有开发人员。


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




创建自定义的archetype项目


使用过Maven的人都知道maven中有许多功能都是通过插件来提供的,其中的一个插件:maven-archetype-plugin ,通过该插件可以自定义符合我们自己需求的archetype。



创建的maven project的pom.xml文件中添加archetype插件

<build>
   <pluginManagement>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-archetype-plugin</artifactId>
              <version>3.0.0</version>
          </plugin>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-resources-plugin</artifactId>
              <configuration>
                   <encoding>UTF-8</encoding>
              </configuration>
           </plugin>
      </plugins>
    </pluginManagement>
</build>
复制代码


进入该project的根目录,执行mvn命令mvn archetype:create-from-project.

如果用IDEA可以采用:

image.png

成功执行完之后,在target/generated-sources/ 下有个archetype目录,这个就是生成的archetype。可以看到这个目录其实就是普通的maven项目,也就是我们最终的骨架模板项目,我们称之为template项目。


有几个目录、文件需要说明:


  • src/main/resources/archetype-resources:通过template骨架创建的项目包含的所有的文件和目录都在这个目录下


  • src/main/resource/META-INF/maven/archetype-metadata.xml此文件是配置文件,告诉archetype插件,archetype-resources里面哪些文件需要包含到创建出的项目里。打开这个文件发现有个fileSets标签,包含一系列的fileSet标签。不难发现fileSet就是对archetype-resources下的资源描述。



改造template


archetype:create-from-project并非完全智能,需要自己稍加修改


  • 修改pom.xml文件
  • 修改packing的值为jar或者war



修改archetype-metadata.xml
<requiredProperties>
      <requiredProperty key="groupId"/>
      <requiredProperty key="artifactId"/>
      <requiredProperty key="version">
          <defaultValue>1.0.0</defaultValue>
      </requiredProperty>
</requiredProperties>
复制代码


在fileSets同级下增加requiredProperties标签。


requiredProperties定义模板项目中一些参数值,内置的参数包括:


  • groupId


  • artifactId


  • version


  • package


自己可以提供这些参数的默认值,也可以增加自己额外的参数。大部分情况下,内置的参数足够用。


  • fileSet标签有一个filtered=“true”属性,表示该fileSet可以使用参数变量。


  • 在文件中引用参数变量的方式参数名,例如{参数名},例如,{package}


通常生成template项目时,archetype插件会扫描所有的文件,把需要替换为参数的地方自动替换。毕竟代码没有那么智能,有些地方会有问题。所以,我们要检查每个文件的参数部分是不是我们预期的。增加参数、删除参数来达到我们的要求。




部署生成的archetype本地仓库


execute(create-from-project)之后,在 target 文件夹下,生成骨架模板,如下:

image.png

修改工作目录为 骨架所在的目录,然后执行 install 命令:


  • cd进入generated-sourced/archetype目录,运行maven命令:mvn clean install,到这里我们的模板骨架项目基本完成。


或者采用idea:

image.png

此时,可以在maven仓库中看到,已经生成好的骨架模板:

image.png


这个xml文件记录了骨架的信息,一会要用到!

image.png



执行 archetype:crawl 命令


路径无所谓,命令: archetype:crawl


IDEA:可以采用

image.png

执行完毕后,在maven根目录下会生成 archetype-catalog.xml 文件。

这个文件记录 用户自定义骨架的信息。

image.png



archetype-catalog.xml的内容

image.png


部署到maven私服


修改archetype目录下的pom.xml文件添加配置

<distributionManagement>  
        <repository>  
            <id>releases</id>  
            <name>Micaicms Releases</name>  
            <url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url>  
        </repository>  
        <snapshotRepository>  
            <id>snapshots</id>  
            <name>Micaicms Releases</name>  
            <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>  
        </snapshotRepository>  
</distributionManagement>  
复制代码
配置maven里面的settings.xml文件


的settings.xml文件配置如下,配置好以后就可以执行发布命令了

image.png

注意:此处的配置,id要与setting.xml中的server标签中的id一致。



上传到maven私服中


cd进入generated-sourced/archetype目录,运行maven命令:


  1. mvn clean install
  2. mvn deploy


成功后即可在maven私服中查看到该模板

image.png


使用原型创建新项目


任意目录下执行

mvn archetype:generate -DarchetypeGroupId=com.ktr -DarchetypeVersion=1.0 -DarchetypeArtifactId=ktr-archetype
复制代码
添加IDEA

点击Add Archetype

image.png

对应填写好 如果放在私服中就要在Reposytory中写上私服路径  这样就可以用了,

删除自定义骨架


如果这个骨架不合适需要删除骨架,找到 IntelliJ IDEA 的骨架配置文件,大概就是这个位置: C:\Users${user}.IntelliJIdea${version}\system\Maven\Indicesimage.png


这里面有个文件 UserArchetypes.xml

image.png

然后…你就可以删除它了.. 可以删除这一条, 也可以删除整个文件, 然后重启 IDEA , 你就会发现删除成功!



参考:


www.colorfuldays.org/tag/archety…

maven.apache.org/archetype/m…

maven.apache.org/archetype/m…

maven.apache.org/archetype/m…

maven.apache.org/archetype/m…

maven.apache.org/archetype/m…

maven.apache.org/archetype/m…

maven.apache.org/archetype/m…




相关文章
|
6天前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
47 8
|
3天前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
13 3
|
29天前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
111 1
Maven——创建 Spring Boot项目
|
19天前
|
缓存 IDE Java
idea的maven项目打包时没有source下的文件
【10月更文挑战第21天】idea的maven项目打包时没有source下的文件
31 1
|
20天前
|
Java API Apache
除了 Maven,还有哪些工具可以管理项目的依赖和版本冲突
除了Maven,常用的项目依赖管理和版本冲突解决工具有Gradle、Ivy、Ant+Ivy、SBT等。这些工具各有特点,适用于不同的开发环境和需求。
|
23天前
|
Java 编译器 测试技术
全面理解Maven Compiler Plugin-Maven编译插件
【10月更文挑战第16天】
127 1
|
3月前
|
Java Maven
解决idea每次新建maven项目都需要重新配置maven的问题
解决idea每次新建maven项目都需要重新配置maven的问题
148 1
|
1月前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
22 1
如何使用 maven 创建一个 Spring Boot项目
|
1月前
|
Java Maven Kotlin
idea maven创建kotlin项目
本文介绍了在IntelliJ IDEA中使用Maven创建Kotlin项目的步骤,包括在`pom.xml`文件中添加Maven中央仓库、配置`kotlin-maven-plugin`插件、指定源目录、添加测试插件和执行插件,以及添加Kotlin测试依赖和标准库依赖。文中还提到了如何通过更换镜像或使用代理来解决依赖下载速度慢的问题,并展示了运行示例代码的截图。
75 4
idea maven创建kotlin项目
|
1月前
|
Java Maven Android开发
eclipse创建maven项目
本文介绍了在Eclipse中创建Maven项目的步骤,包括打开Eclipse、选择Java项目、完成项目创建以及自动下载插件的过程。
82 2
eclipse创建maven项目