背景
为了避免每次新建项目时都要花时间搭项目的框架结构,我们通过自定义Archetype
来快速创建项目同时规范项目结构,如层级关系、必有的类、父pom等
自定义流程
- 找一个原型项目,需要有项目的标准结构
- 确保项目编译无误:
mvn clean install
使用以下命令将现有项目打包为 Archetype:
mvn archetype:create-from-project
此命令将项目转换为 Archetype,并在 target/generated-sources/archetype 目录中生成 Archetype 的源码,最核心的部分就在于怎么修改target/generated-sources/src/main/resources/archetype-resources下的文件
- 删除无用的
修改父pom
首先,找到根目录的pom文件,会发现缺少module信息,这个需要加上
<modules>
<module>${rootArtifactId}-api</module>
<module>${rootArtifactId}-system</module>
</modules>
父pom依赖引用的每个module也要修改,groupId 和 artifactId 按照如下的方式来改,不要写死!!
<dependencyManagement>
<dependencies>
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-api</artifactId>
<version>${project.version}</version>
</dependency>
... ...
</dependencies>
</dependencyManagement>
修改module
默认生成的module可能就是模板项目的名字,需要修改成类似__rootArtifactId__-api这种形式,注意是双下划线,然后module中的互相引用 groupId 和 artifactId 按照父 pom 的方式对应修改。
archetype-metadata 修改
找到META-INF/maven/archetype-metadata.xml文件,修改modules相关的部分,重点注意看 id 、dir、name 的修改方式。
<modules>
<module id="${rootArtifactId}-api" dir="__rootArtifactId__-api" name="${rootArtifactId}-api"> <fileSets> <fileSet filtered="true" packaged="true" encoding="UTF-8"> <directory>src/main/java</directory> <includes> <include>**/*.java</include> </includes> </fileSet> </fileSets> </module> ... ...
</modules>
修改完成之后,进入 target/generated-sources/archetype目录,执行命令:
mvn install
顺便执行下mvn deploy上传到nexus
使用方式
方式一:通过命令行
mvn archetype:generate -DgroupId=xxx -DartifactId=xxx-xxx -Dpackage=xxx.xxx.xxx -DarchetypeArtifactId=archetype-quickstart -DarchetypeRepository=https://..../catelog/archetype-catalog.xml
使用
mvn archetype:generate
命令时,如果没有指定版本,maven
会使用最新稳定版的archetype
方式二:通过 IntelliJ IDEA
- 配置
Catalog
https://..../catelog/archetype-catalog.xml
参考:https://baijiahao.baidu.com/s?id=1722242604793241553&wfr=spider&for=pc