老大说新项目的结构和 xxx 项目一样就可以了,我 ……(一)

简介: 又要开发新项目了,还是创建新项目,怎么办?老大说按照 xxx 项目的结构创建一个新项目就可以了。


前言


又要开发新项目了,还是创建新项目,怎么办?老大说按照 xxx 项目的结构创建一个新项目就可以了。

在工作中经常有新项目需要创建,此时就会有三种常用的方式


CC 大法 新建项目,然后找到之前的各种工具类,复制粘贴进来,此时还不一定能跑起来,然后再进行各种调试。


CD 大法 复制老项目,然后改 module 名字,依赖名字,删除老代码,当然也不一定能跑起来,此时再进行各种调试。

当然,这里肯定不是使用这两种办法,下面咱们介绍一种更简洁的方式,使用 maven archetype 生成项目模版,一键创建项目。

Action!!!


什么是 Archetype ?


简而言之,Archetype 是 Maven 项目模板工具箱。

An archetype is defined as an original pattern or model from which all other things of the same kind are made.


原型被定义为原始样式或模型,从中可以制成所有其他同类项目。

官方解释,简洁明了,就是使用已有的项目,生成一个模版。以后使用这个模版就可以快速生成结构相同的项目了。在团队开发中很有用。


其实就是官方解释,地址贴上来:maven.apache.org/archetype/m…

下面使用 IDEA 作为演示工具,一步一步开始介绍。


准备模版项目

这里还是要有一个模版项目,比如这样:


这是一个多 module 项目,一个简单的 demo

  1. 使用了 nacos 作为注册中心;
  2. fegin 作为调用工具;
  3. 有通用校验 token 工具类;
  4. 假设里面也有一些公司的公共配置(MQ,链路监控,统一日志等)。

当然这个项目是可以跑起来的。新创建的项目也是这个模版。


进入主题

使用命令

**archetype:generate **

这样是基于当前项目生成,你也可以使用官网的用法分别指定参数

  1. mvn archetype:generate 然后一步一步按照提示输入;
  2. 一次性输入,其中 DarchetypeGroupId、DarchetypeArtifactId、DarchetypeVersion 为生成的 Archetype 项目的组织版本。
mvn archetype:generate                                  \
  -DarchetypeGroupId=<archetype-groupId>                \
  -DarchetypeArtifactId=<archetype-artifactId>          \
  -DarchetypeVersion=<archetype-version>                \
  -DgroupId=<my.groupid>                                \
  -DartifactId=<my-artifactId>

高级用法 mvn clean archetype:create-from-project


执行图示如下:


执行后返回 IDEA 查看项目,在 target/generated-sources 目录下的 archetype 即生成的项目模版。


结构如图所示:

  1. main/resources/archetype-resources:项目的模版,生成新项目,就是根据这块的代码进行生成的。
  1. .idea 无用,删除掉。
  2. __rootArtifactId__xxx 项目的各个 module
  1. main/resources/META-INF/maven/archetype-metadata.xml:模版工程的元数据配置。

可以把 archetype 拷出去,这是一个单独的工程模版,拷出去之后,使用 IDEA 打开。

下面开始介绍 archetype 里面都有什么。

目录
相关文章
|
SQL 存储 关系型数据库
对线面试官 - 如何理解MySQL的索引覆盖和索引下推
索引下推是MySQL 5.6引入的优化,允许部分WHERE条件在索引中处理,减少回表次数。例如,对于索引(zipcode, lastname, firstname),查询`WHERE zipcode=&#39;95054&#39; AND lastname LIKE &#39;%etrunia%&#39;`时,索引下推先过滤zipcode,然后在索引中应用lastname条件,降低回表需求。索引下推可在EXPLAIN的`Using index condition`中看到。
1185 0
对线面试官 - 如何理解MySQL的索引覆盖和索引下推
如何关掉Parsed mapper file日志打印
如何关掉Parsed mapper file日志打印
492 1
|
Linux
修复io.minio.errors.ErrorResponseException: Access denied错误
修复io.minio.errors.ErrorResponseException: Access denied错误
1781 0
|
7月前
|
Arthas 监控 Java
Arthas dashboard(当前系统的实时数据面板)
Arthas dashboard(当前系统的实时数据面板)
390 12
|
XML Java 开发者
Spring 和 Spring Boot 的区别
【2月更文挑战第3天】
1614 2
|
架构师 中间件 API
微服务和 SOA 的 6 大核心区别,你都知道吗?
本文详解SOA与微服务的六大区别,帮助更好地理解和应用这两种架构,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务和 SOA 的 6 大核心区别,你都知道吗?
|
Arthas 监控 数据可视化
JVM进阶调优系列(7)JVM调优监控必备命令、工具集合|实用干货
本文介绍了JVM调优监控命令及其应用,包括JDK自带工具如jps、jinfo、jstat、jstack、jmap、jhat等,以及第三方工具如Arthas、GCeasy、MAT、GCViewer等。通过这些工具,可以有效监控和优化JVM性能,解决内存泄漏、线程死锁等问题,提高系统稳定性。文章还提供了详细的命令示例和应用场景,帮助读者更好地理解和使用这些工具。
|
存储 关系型数据库 MySQL
MySQL索引失效及避免策略:优化查询性能的关键
MySQL索引失效及避免策略:优化查询性能的关键
775 3
|
存储 算法 索引
HashMap底层数据结构及其增put删remove查get方法的代码实现原理
HashMap 是基于数组 + 链表 + 红黑树实现的高效键值对存储结构。默认初始容量为16,负载因子为0.75。当存储元素超过容量 * 负载因子时,会进行扩容。HashMap 使用哈希算法计算键的索引位置,通过链表或红黑树解决哈希冲突,确保高效存取。插入、获取和删除操作的时间复杂度接近 O(1)。
306 0
|
存储 Java 数据安全/隐私保护
Java的文件管理系统都有什么?
Java的文件管理系统都有什么?
317 0

热门文章

最新文章