自定义archetype脚手架完整步骤与异常情况处理方案
- 一、创建模板项目
- 二、生成骨架jar包
- 三、骨架安装到本地仓库
- 如果出现安装位置错误的情况,参考以下场景处理:
- 四、选择骨架,创建新项目
- 创建项目时,如果一直卡在`Generating project in Batch mode`时
- 五、删除测试过程中,添加的无用的骨架
- 参考文章
介绍:不同公司可能有自己内部的项目结构与统一依赖,每次新建项目都copy的话很麻烦,并且容易出错,此时就可以通过脚手架的方式直接创建符合公司规范的项目。本文章完整介绍如何创建,解决遇到的各种问题。
一、创建模板项目
idea点击file--->new--->project
选择maven / Spring initializr 方式都可以,主要是创建一个作为模板的项目。
然后创建自己的各种包,及配置,譬如pom.xml 、application.yml等;
如:
到这,可能有人会有疑问,我每个项目的包名都不同。
比如项目1是com.xxx.xx.x1
项目2是com.yyy.yy.y1
要咋弄?不急,最后会有
二、生成骨架jar包
注意!!!
- 下方步骤,建议使用命令行的方式运行mvn,不要用idea右侧的maven插件命令
- 检查maven的配置是否正确:
根目录执行 mvn archetype:create-from-project
运行成功会出现目录target
target
点开结构如下:
三、骨架安装到本地仓库
再进入target\generated-sources\archetype
目录执行:mvn clean install
执行成功后,根据日志信息,检查安装的本地仓库位置是否正确。
如果出现安装位置错误的情况,参考以下场景处理:
- idea中确定配置已经指定了自定义的仓库地址与setting.xml位置
- 需要明确一个点: 由于通过命令行的方式执行mvn,所以实际运行的是pc安装的maven,而非idea内置的maven。
- 所以需要配置安装的maven的本地仓库地址,而非在idea的
settings
中配置 - 配置步骤如下:
- 打开maven安装目录conf/setting.xml文件
- 在
<settings>
标签下添加一行:<localRepository>D:\.m2\repository</localRepository>
- 重新执行进入
target\generated-sources\archetype
目录执行:mvn clean install
即可
四、选择骨架,创建新项目
idea点击file—>new—>project—>点击左侧的Maven----->选中复选框create from archetype----->选择自己的骨架。
记好骨架的坐标:
添加自定义骨架:
选择骨架,项目创建:
核对maven配置:
重点!!! 项目的包名参数传输
项目创建完成之后效果:
对比骨架定义的包结构与创建的项目的包结构:
可以发现第一层包t1
是会被省略掉的,这个一定要注意。
创建项目时,如果一直卡在Generating project in Batch mode
时
原因: IDEA创建MAVEN项目卡在Generating project in Batch mode。是MAVEN一直在请求:
http://repo1.maven.org/maven2/archetype-catalog.xml
这个项目目录的xml文件,由于墙的问题,加载缓慢,等待时间十分漫长。
解决方法: 修改setting.xml文件,把mirror改成阿里的镜像。
①:打开maven目录下的conf/setting.xml,注意是idea使用的maven【即idea内置的maven,目录一般是:idea安装目录\plugins\maven\lib\】。
②:搜索 <mirrors>
;找到<mirrors>
。在<mirrors>
节点下添加。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
③:运行mvn命令的时候加上 -DarchetypeCatalog=local
这个参数。在IDEA中:
五、删除测试过程中,添加的无用的骨架
- 找到文件:UserArchetypes.xml,如我的路径是:
C:\Users\a\.IntelliJIdea2019.3\system\Maven\Indices\UserArchetypes.xml
- 删除里面的记录
参考文章
https://blog.csdn.net/wangfenglei123456/article/details/121745483
https://blog.csdn.net/z69183787/article/details/90945042
https://blog.csdn.net/sheypang/article/details/79022260