目录
一、简介
二、具体步骤
三、 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博客