当前位置: 首页 > news >正文

MAVEN:自定义模板Archetype的创建

目录

一、简介

二、具体步骤

三、 vscode通过模板创建项目

 四、通过IDEA创建


一、简介

        有时候MAVEN自带的模板库并不能满足我们创建项目的需求,为了能够快速创建项目,免去每次复杂的配置,所以我们需要自定义模板库,本次操作基于vscode的环境。

        在MAVEN的仓库里,有个archetype-catalog.xml文件里面记载了模板的坐标信息,可以方便IDEA通过坐标添加模板,而vscode可以自动扫描得到自定义的模板库,无需手动添加。

二、具体步骤

1、自定义一个项目,用来当作模板,我创建的是一个springmvc的模板

 2、在pom.xml文件中添加代码。

        以下代码指定了一个插件maven-archetype-plugin和一个扩展maven-archetype-plugin.

        maven-archetype-plugin插件:通过该插件,可以创建包含特定目录结构、配置文件和基本代码框架的项目模板。

        archetype-packaging 扩展:可以定义项目原型的结构和组织方式,涉及archetype-metadata.xml的生成。

        <plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-archetype-plugin</artifactId><version>3.2.1</version></plugin></plugins><extensions><extension><groupId>org.apache.maven.archetype</groupId><artifactId>archetype-packaging</artifactId><version>3.0.1</version></extension></extensions>

最终的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.sunlan</groupId><artifactId>springmvc</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>springmvc Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.sunlan.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.30</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.30</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><!-- 添加jstl依赖,使其支持<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>jstl语法 --><!-- jstl标签库相关 --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl --><dependency><groupId>org.apache.taglibs</groupId><artifactId>taglibs-standard-jstlel</artifactId><version>1.2.5</version></dependency></dependencies><build><finalName>springmvc</finalName><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.2.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-archetype-plugin</artifactId><version>3.2.1</version></plugin></plugins></pluginManagement><extensions><extension><groupId>org.apache.maven.archetype</groupId><artifactId>archetype-packaging</artifactId><version>3.0.1</version></extension></extensions></build>
</project>

 3、创建archetype骨架

在项目根目录下运行以下代码:

mvn clean archetype:create-from-project

运行完成后项目会在target文件夹下生成以下目录并将默认的值替换成变量 :

以下是archetype骨架自带的默认变量对应的默认值

其中在archetype-metadata.xml文件中可以用来定义模板的结构。

其中在archetype-resources文件中可以查看具体的模板结构和代码 。

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor xsi:schemaLocation="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0 http://maven.apache.org/xsd/archetype-descriptor-1.1.0.xsd" name="springmvc"xmlns="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><fileSets><fileSet filtered="false" packaged="false" encoding="UTF-8"><directory>src/main/java</directory><includes><include>**/*.java</include></includes></fileSet><fileSet filtered="false" packaged="false" encoding="UTF-8"><directory>src/main/resources/lib</directory><includes><include>**/*.jar</include></includes></fileSet><fileSet filtered="false" packaged="false" encoding="UTF-8"><directory>src/main/webapp</directory><includes><include>**/*.jsp</include><include>**/*.xml</include></includes></fileSet></fileSets>
</archetype-descriptor>

fileSet代表文件集,用来定义模板库包含的文件和文件夹

        属性filtered=true,可以替换引用的变量。如果将filtered设置为false,则不会替换引用的变量,而是保持引用的原样。

        属性packaged=false则不会自动生成包类型的文件夹,反之则会自动生成。

        属性include用来表示要模板包含的文件,其中**表示匹配任意子目录,*表示

 4、安装archetype到本地

 进入target/generated-sources/archetype目录下,执行指令:

mvn clean install

运行成功后可以在info指示的目录下找到骨架的jar包。

 5、在本地仓库生成骨架坐标信息

执行以下命令,在archetype-catalog.xml内生成坐标信息: 

mvn archetype:crawl

三、 vscode通过模板创建项目

 第一步:

  第二步:

 然后根据模板创建即可。

 四、通过IDEA创建

然后就跟创建webapps的模板库一样了。 

五、参考资料

maven-archetype自定义模板创建,并在本地和远程仓库生成模板项目_maven-archetype-plugin 版本-CSDN博客

相关文章:

  • 【java】速度搭建一个springboot项目
  • 计算机网络--应用层
  • BF16相比FP16的优点
  • alist配合onlyoffice 实现在线预览
  • 达梦数据库
  • Ajax入门
  • 深度学习中2D检测
  • 小程序中用于跳转页面的5个api是什么?区别
  • Locust:用Python编写可扩展的负载测试
  • Vue 学习笔记 总结
  • 大厂真实面试题(一)
  • calibre,一个超厉害的 Python 库!
  • 重新学习STM32(2)NVIC
  • OpenGL相关库下载并解决三个入门问题
  • kettle从入门到精通 第六十四课 ETL之kettle kettle中执行SQL脚本步骤,使用需当心
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Java编程基础24——递归练习
  • js如何打印object对象
  • Netty源码解析1-Buffer
  • nginx 负载服务器优化
  • PHP那些事儿
  • tensorflow学习笔记3——MNIST应用篇
  • Yeoman_Bower_Grunt
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 前端设计模式
  • 什么软件可以剪辑音乐?
  • 我有几个粽子,和一个故事
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 小程序测试方案初探
  • 在Unity中实现一个简单的消息管理器
  • 7行Python代码的人脸识别
  • ​【已解决】npm install​卡主不动的情况
  • #14vue3生成表单并跳转到外部地址的方式
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • $.ajax中的eval及dataType
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二) 初入MySQL 【数据库管理】
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET和.COM和.CN域名区别
  • .NET开发人员必知的八个网站
  • .so文件(linux系统)
  • @TableLogic注解说明,以及对增删改查的影响
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [000-01-030].Zookeeper学习大纲
  • [2010-8-30]
  • [Algorithm][动态规划][01背包问题][目标和][最后一块石头的重量Ⅱ]详细讲解
  • [Algorithm][综合训练][kotori和气球][体操队形][二叉树中的最大路径和]详细讲解
  • [Android] Android ActivityManager