远方的灯塔 - 专注于服务端技术分享 远方的灯塔 - 专注于服务端技术分享
首页
  • Java SE
  • Struts2
  • Hibernate
  • MyBatis
  • JAX-WS
  • 并发
  • 分布式
  • Git
  • 文章分类
  • 文章标签
  • 文章归档
  • 《C程序设计语言》
心情随笔
友情链接
给我留言 (opens new window)
关于我
GitHub (opens new window)

Terwer Green

一个后端老菜鸟
首页
  • Java SE
  • Struts2
  • Hibernate
  • MyBatis
  • JAX-WS
  • 并发
  • 分布式
  • Git
  • 文章分类
  • 文章标签
  • 文章归档
  • 《C程序设计语言》
心情随笔
友情链接
给我留言 (opens new window)
关于我
GitHub (opens new window)
  • Mac使用iTerm2代替默认终端
  • 使用SSH方式操作GitHub
  • 使用GitHub Actions完成ci自动化部署
  • 介绍一个Go实现的内网穿透神器frp
  • IDEA自定义Maven的archetype
    • 为什么要自定义 archetype
    • Archetype maven 项目的组成
    • 创建自己的骨架结构
      • 创建 maven 工程
      • 骨架创建
      • 骨架安装
    • 使用自己创建的自定义骨架
      • 添加骨架
    • 解决添加失效问题(IDEA2022.1 以下版本有效,不包括 IDEA2022.1)
    • IDEA 2022.1 的变化
    • IDEA 2022.3 注意事项
    • 最新可用源码
  • Java中HTML与Textarea换行符的相互转换
  • 通过Sonatype发布Maven项目到中央仓库
  • 利用Nginx的map实现301重定向
  • NodeJS创建一个空文件
  • 解决jenkins使用sodo出现的Authentication error in jenkins on using sudo错误
  • Mac安装Nginx
  • 关于Springboot配置thymeleaf的404问题
  • Java的重载、覆盖和隐藏的区别
  • 在SpringBoot的maven插件中设置命令行参数
  • 利用Nginx的stream实现Netty的TCP负载均衡
  • Mac Big Sur 安装CocoaPods
  • SpringBoot访问webapp下面的html等静态资源文件出现404解决方案
  • 使用pnpm管理nodejs项目
  • TomEE的使用与版本对比
  • Struts1页面表单提交给action后页面一片空白解决
  • Struts1实现国际化
  • 解决macOS Monterey 12.3没有python2的问题
  • 在 macOS 上共存 VirtualBox 和 VMWare Fusion
  • Java中的静态代码块、构造代码块、构造函数以及Java类初始化顺序
  • Linux获取文件名以及后缀名
  • 一个令人沮丧的问题:Mac的unzip竟然不支持中文名
  • IDEA的大坑:src目录丢失Source Root标记就不会编译
  • vagrant用户无法访问vboxsf的共享文件夹解决方案
  • mysql查看my_cnf位置
  • docker中的centos7安装中文输入法
  • MySQL57查看与修改数据库编码为utf8
  • 给阿里云docker中的Nginx配置SSL证书开启https服务
  • Deepin20.5 安装 docker 与 docker-compose
  • Deepin配置Typora和PicGo实现GitHub图床
  • 利用 vim 在文档内容的中英文之间添加一个空格
  • 在Docker中部署confluence和jira
  • Confluence安装MetaWeblogApi插件配合MWeb打造知识库
  • deepin的vscode怎么更新
  • 解压AppImage的方法
  • JS去除日期date格式化中的T和Z
  • 卸载Wine版本的微信导致文泉字体被删掉解决
  • 简单测试CORS
  • 阿里云Anlolis安装docker并开启docker的compose插件
  • 阿里云效流水线构建Spring_Boot的Maven项目时环境变量的使用
  • 利用maven-help-plugin在shell中读取pom_xml的变量
  • docker运行思源笔记
  • iframe父子方法相互调用总结
  • linux 上传文件 rz命令 提示command not found 解决方法
  • Deepin搭建GO开发环境
  • Mac最小化窗口的方法
  • 向google提交sitemap.xml总是报时间错误解决
  • IDEA自定义生成注释与作者版权信息
  • Deepin_linux_An_error_occurred_while_applying_changes_xdg_desktop-menu_No_writable_system_menu_directory_found解决方案
  • pnpm安装electron报错404解决方案
  • 后端服务CORS预检请求验证问题探究
  • Charles代理支持localhost
  • Win10导入Deepin到WSL
  • bat脚本乱码问题解决方案
  • Spring-Boot新项目启动总是提示:Process-finished-with-exit-code-0
  • docker的WordPress启用https
  • JDK之JavaBean内省机制
  • 解决一个maven的site命令报错问题
  • git修改提交的用户名
  • Microsoft Visual C++ 6.0 简体中文版
  • IDEA开启GO模块
  • Java生成验证码图片
  • SpringBoot中https的配置
  • docker部署思源笔记并配置nginx支持https
  • git删除所有分支
  • plantuml配合graphviz
  • Struts2使用标签库找不到URI:[struts-tags]的taglib[s]问题解决
  • 搭建一个轻量级的ftp服务器
  • 解决Tomcat8+设置allowLinking不生效问题
  • Java获取url中参数
  • 经验分享
terwer
2023-02-22
目录

IDEA自定义Maven的archetype

在创建 Maven 的项目时我们发现了一个很不方便的问题,就是每次创建 Maven 的工程的时候,都需要选择一个骨架,但是每个骨架都需要删除一部分东西才行,这样的话实在是太不方便了。

# 为什么要自定义 archetype

在创建 Maven 的项目时我们发现了一个很不方便的问题,就是每次创建 Maven 的工程的时候,都需要选择一个骨架,但是每个骨架都需要删除一部分东西才行,在平时开发中,如果是分布式项目,有可能会频繁创建子项目,每次都要删除不要的文件然后拷贝我们要的文件,例如弹簧配置,web.xml 中配置等。这样做不仅会浪费大量时间,拷贝和删除文件也容易导致错误的发生,比如漏拷某文件。

# Archetype maven 项目的组成

一个典型的 Archetype Maven 项目主要包括如下几个部分:

  • pom.xml:Archetype 自身的 POM。
  • src/main/resources/archetype-resources/pom.xml:基于该 Archetype 生成项目的 POM 原型。
  • src/main/resources/META-INF/maven/archetype-metadata.xml:Archetype 的描述符文件。
  • src/main/resources/archetype-resources/**:其他需要包含在 Archetype 中的内容。

# 创建自己的骨架结构

要创建 Maven 的模板,首先你要创建一个 Maven 的项目,然后再以这个项目作为模板。

# 创建 maven 工程

首先创建一个 Maven 的工程,名字叫 maven-template-java-simple

选择骨架

# 骨架创建

在 maven-template-java-simple 根目录执行

mvn archetype:create-from-project
1

报错解决

mvn archetype:create-from-project报错The specified user settings file does not exist
1

https://www.cnblogs.com/chmod/p/15489910.html (opens new window)

执行完毕之后,会出现一个编译之后新的 maven 工程(target 文件夹),如下图:

# 骨架安装

安装对应骨架项目

先进入骨架项目的 pom 文件目录:

cd target/generated-sources/archetype
1

执行安装:

mvn clean install
1

我们的骨架项目坐标如下:

<groupId>com.terwergreen</groupId>
<artifactId>maven-template-java-simple-archetype</artifactId>
<version>1.0.0</version>
<packaging>maven-archetype</packaging>
1
2
3
4

至此,骨架项目安装成功。

# 使用自己创建的自定义骨架

创建新的 Maven 工程,选择自定义骨架

# 添加骨架

创建新的 maven 工程,选择 Add Archetype,填写刚才添加的骨架工程坐标,点击 OK,这是会生成一个新的骨架选项。

groupId com.terwergreen
artifactId maven-template-java-simple-archetype
version 1.0.0
1
2
3

选中新创建的骨架,点击下一步创建新的 Maven 的项目如下,这是新建的测试项目:

以后再创建类似的 Maven 的项目时,就可以快速新建的 Maven 项目而不用改来改去了。是不是很方便呢?

PS:删除自定义 archetype

cd /Users/terwer/Library/Caches/JetBrains/IntelliJIdea2021.3/Maven/Indices
1

然后编辑 UserArchetypes.xml​ 文件即可。注意:修改文件之后需要重启 IDEA。

手动添加的方法:

# 解决添加失效问题(IDEA2022.1 以下版本有效,不包括 IDEA2022.1)

cd ~/Library/Caches/JetBrains
1

找到对应版本目录,例如

cd /Users/terwer/Library/Caches/JetBrains/IntelliJIdea2021.3/Maven/Indices
1

然后新建一个 UserArchetypes.xml​ 文件,内容如下:

<archetypes>
    <archetype groupId="com.terwergreen" artifactId="maven-template-java-simple-archetype" version="1.0.3" />
</archetypes>
1
2
3

重启 IDEA 就可以了。

# IDEA 2022.1 的变化

IDEA2022 在 Add​ 完成之后,下次新建需要切换 Catalog 到 Default Local​,然后才能在 Archetype​ 中选择到。

​image-20220421135052088​

# IDEA 2022.3 注意事项

IDEA2022.3 需要自己填写下面的内容:

​​

# 最新可用源码

https://github.com/terwer/maven-template-java-simple (opens new window)

2022/03/14 验证通过

‍

文章更新历史

2022/03/03 初稿。

2022/04/21 兼容 IDEA 2022.1 。提供使用的新方法。

2023/02/22 兼容 IDEA 2033.3 。

编辑 (opens new window)
#骨架#创建#idea#maven#archetype
上次更新: 2023/02/22, 14:00:23
介绍一个Go实现的内网穿透神器frp
Java中HTML与Textarea换行符的相互转换

← 介绍一个Go实现的内网穿透神器frp Java中HTML与Textarea换行符的相互转换→

最近更新
01
解决css部分border被圆角切掉之后圆角的边框消失问题
03-18
02
使用TypeScript开发一个自定义的Node-js前端开发脚手架
03-08
03
Github-Actions使用release-please实现自动发版
03-06
更多文章>
Theme by Vdoing | Copyright © 2011-2023 Terwer Green | MIT License | 粤ICP备2022020721号-1 | 百度统计
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式