查看原文
其他

使用 mvn archetype 快速创建模板工程

sevenyuan SpringForAll社区 2021-05-27

点击上方☝SpringForAll社区 轻松关注!

及时获取有趣有料的技术文章

本文来源:http://r6d.cn/abTtE


避免重复工作,记录制作 maven 模板


前言

微服务的概念越来越流行,随着服务粒度越来越细,拆分的模块越来越明确,我们的工程项目也变得越来越多。

有时候一个项目搭建,需要集成数据库、Spring 框架、消息框架、分布式任务框架、缓存等等,如果每次都新建空项目,重新配置,有点太麻烦,所以可以使用项目模板功能

maven archetype:create-from-project,制作符合需求的脚手架工程


配置 demo 工程

一般制作的话,使用公司内常用的中间件依赖,制作一份统一的模板,后续新建项目就能更加快速和模块分级合理化。

这里记录的是常规项目模板制作:

打开 IDEA,新建一个工程(同样可以使用 IDEA 工具中自带的模板)

新建模块 module,制定合适的模块层级

├── test-controller
│   ├── pom.xml 
│   └── src 
├── test-core 
│   ├── pom.xml 
│   └── src 
├── test-dao 
│   ├── pom.xml 
│   └── src 
├── test-deploy 
│   ├── pom.xml 
│   └── src 
....// 其它扩展模块 
├── README.md 
├── .gitignore 
└── pom.xml

例如上面那样结构,在 src 目录下方 java、resource、webapp 等文件


生成模板

mvn archetype:create-from-project

在项目目录下,输入该指令,等待执行完

可以在本地模式下测试模板是否符合预期,进入 target 目录下的 archetype 目录

cd ${Your Project File Directory}/target/generated-sources/archetype

例如上图,确认项目结构无误后,将模板安装到本地

mvn install

接着就能在 .m2/repository 目录下看到 archetype-catalog.xml,在里面多了刚才生成的模板

<archetype>
  <groupId>org.example</groupId>
  <artifactId>test-archetype</artifactId>
  <version>1.0-SNAPSHOT</version>
  <description>test-archetype</description>
</archetype>

生成项目

mvn archetype:generate \
    -DarchetypeGroupId=org.example \
    -DarchetypeArtifactId=test-archetype \
    -DarchetypeVersion=1.0-SNAPSHOT \
    -DinteractiveMode=false \
    -DarchetypeCatalog=local \
    -Dversion=1.0.0-SNAPSHOT \
    -DgroupId=cn.sevenyuan \
    -DartifactId=sevenyuan

-D 后面的参数是要重点说明一下的:

  • archetypeGroupId:模板组织 ID
  • archetypeArtifactId:模板 artifact ID
  • archetypeVersion:模板版本号
  • interactiveMode:是否启用交互模式
  • archetypeCatalog:模板目录位置,分为 remote 和 local
  • version:自己应用的版本号
  • groupId:自己应用的组织 ID
  • artifactId:自己应用的 artifact ID

例如我使用了 cn.sevenyuan 这个组织名,生成的目录结构如下


上传模板到仓库

需要在 target/generated-sources/archetype 目录下的 pom 文件中加入仓库地址,例如如下示范

<!--运行 mvn deploy 时上传构件到本地仓库 -->
  <distributionManagement>
    <repository>
      <id>xxx-releases</id>
      <name>Nexus Release Repository</name>
      <url>http://xxx.com/nexus/content/repositories/xxx-release/</url>
    </repository>
    <snapshotRepository>
      <id>xxx-snapshots</id>
      <name>Nexus Snapshot Repository</name>
      <url>http://xxx.com/nexus/content/repositories/xxx-test/</url>
    </snapshotRepository>
  </distributionManagement>

接着在 archetype 目录下,执行 deploy 命令

mvn deploy

只要别人在 .m2 配置了该仓库地址,就可以一起使用这个项目模板


参看链接

1、Maven自定义archetype生成项目骨架

2021Java深入资料领取方式回复“20210112”

墙裂推荐

【深度】互联网技术人的社群,点击了解!





 SpringMVC项目迁移SpringBoot的问题我都梳理到这儿了

 Tomcat深入理解

 深度解析SpringAOP

 Thread的join()是如何控制多线程同步的


关注公众号,回复“spring”有惊喜!!!

如果资源对你有帮助的话


❤️给个在看,是最大的支持❤️

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存