前言

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

有时候一个项目搭建,需要集成数据库、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生成项目骨架

使用 maven 创建项目模板的更多相关文章

  1. Maven创建项目

    Maven创建项目 Maven翻译成中文是『专家.内行』.Maven是Apache组织中一个颇为成功的开源项目,Maven主要服务于基于Java平台的项目构建.依赖管理和项目信息管理的优秀工具 本文将 ...

  2. vs创建项目模板和项模板

    原文地址:https://msdn.microsoft.com/zhcn/library/xkh1wxd8(v=vs.140).aspx 如何:创建项目模板 Visual Studio 2015   ...

  3. SpringMVC Maven创建项目

    一.配置Maven环境: 1.去官网下载好Maven,并解压: 2.添加环境变量: ①添加环境变量,如下: ②把maven的bin目录添加到环境变量path下面,如下(我系统是win10,win7编辑 ...

  4. MAVEN 创建项目

    使用archetype生成项目骨架 MAVEN 创建项目JAR 和 MAVEN创建项目WAR中是使用特定的acrchetype来进行创建项目,如果使用其他的archetype来创建项目或是使用 mvn ...

  5. 使用maven创建项目

    http://192.168.4.112/rdmanager/main/index.jhtml 1.对于第一次下载某个项目的源码,按照下面的步骤进行: (1)在D:\projects\目录下的空白位置 ...

  6. 从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板

    标题:从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11155 ...

  7. 使用 .NET CORE 创建 项目模板,模板项目,Template

    场景:日常工作中,你可能会碰到需要新建一个全新的解决方案的情况(如公司新起了一个新项目,需要有全新配套的后台程序),如果公司内部基础框架较多.解决方案需要DDD模式等,那么从新起项目到各种依赖引用到能 ...

  8. 【maven】maven创建项目问题

    这个问题困扰了很多,几个月在做大数据课设的时候,本想创建maven项目,但是创建项目失败了.这次又碰到maven创建项目失败,终于解决了.下面按碰到问题的时间来描述,所以需要从头认真看 前提须知 Ma ...

  9. 用maven创建项目引入js文件位置

    用maven创建项目引入js文件位置 截图如下:

随机推荐

  1. IntelliJ IDEA中项目import与open的区别

    场景: 从原来公司离职来到新的公司,接手公司项目,先将项目从git或svn项目版本管理上clone下来,如果项目原先是用Eclipse开发的,而你更习惯于使用IntelliJ IDEA,下面是针对使用 ...

  2. CODING DevOps 系列第四课:DevOps 中的质量内建实践

    什么是质量内建 随着时间的推移,我们项目的开发效率会逐渐降低,直到几年之后整个项目可能就无法维护,只能推倒重来.具体的表现首先就是随着时间推移,我们会发现整个需求列表里面能做的需求越来越少,因为每当我 ...

  3. Ubuntu16.06常见服务搭建

    摘要 系统环境Ubuntu 16.04 amd64 隔一段时间要配一次服务记不住,记录在这里方便以后安装. 目前更新了以下服务: ssh samba vimrc // 20200126更新 ssh 安 ...

  4. HUD-Text插件使用方法

    插件的使用需要 1.HUDText PS:若存在在运行项目时出现了text(clone)而未有字体,点击该HUD的Text的Apply更新预制 由此可见,该插件时同过实例化预制的形式来实现打击浮字的 ...

  5. redis cluster集群中键的分布算法

    Redis Cluster Redis Cluster是Redis的作者 Antirez 提供的 Redis 集群方案 —— 官方多机部署方案,每组Redis Cluster是由多个Redis实例组成 ...

  6. 微信小程序-返回并更新上一页面的数据

    小程序开发过程中经常有这种需求,需要把当前页面数据传递给上一个页面,但是wx.navigateBack()无法传递数据. 一般的办法是把当前页面数据放入本地缓存,上一个页面再从缓存中取出. 除此之外还 ...

  7. Ehcache基础入门

    1. 基本介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认CacheProvider.Ehcache是一种广泛使用的开源Java分布式缓存.主要 ...

  8. typora中的图片处理20200622

    typora中的图片处理20200622 食用建议 typora作为markdown的书写神器,一般习惯的流程是在typora中写完,然后复制粘贴到博客园中,然而,markdown中图片采用的是本地连 ...

  9. 09 . Prometheus监控tomcat+jvm

    List CentOS7.3 prometheus-2.2.1.linux-amd64.tar.gz redis_exporter-v0.30.0.linux-amd64.tar.gz 节点名 IP ...

  10. 二.1.vue-开发环境搭建

    一vue开发环境搭建 1.下载二进制包 https://nodejs.org/zh-cn/ 直接下一步下一步即可,然后dmd中如下显示说明成功: C:\Program Files\nodejs> ...