前言

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

有时候一个项目搭建,需要集成数据库、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. ca72a_c++_标准IO库:面向对象的标准库

    /*ca72a_c++_标准IO库:面向对象的标准库继承:基类->派生类3个头文件9个标准库类型IO对象不可复制或赋值 ofstream, f--file,文件输出流ostringstream, ...

  2. 警告Establishing SSL connection without server's identity verification is not recommended

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] SpringBo ...

  3. JavaWeb网上图书商城完整项目--day02-24.分类模块的相关类创建

    所谓的分类模块:就是显示所有的分类的功能,显示所有的分类在left.jsp页面中 这就是显示所有的分类: 要实现上面的,我们首先创建一个分类模块,该模块需要实现下面的功能 我们先创建上面的java包 ...

  4. robot framework使用小结(四)

    robot framework可以采用读excel表这种形式实现数据分离,本文没有实现批量读取excel表内容(还不会),后续有必要就学习哈再更新~~~ 新建测试案例baidu05, 右键项目名rob ...

  5. Cannot resolve symbol window

    参照官网执行如下代码的时候,报了Cannot resolve symbol window错误. val windowedCounts = words.groupBy( window($"ti ...

  6. python将列表按行写入csv

    import csv rows2 = ['abc1/ab1c','N'] for n in range(10): f = open("ok.csv", 'a',newline='' ...

  7. 在eclipse中使用maven构建spring cloud微服务

    使用eclipse中使用maven构建spring cloud微服务,springcloud通过maven构建项目.springcloud项目搭建. 工具/原料   eclipse maven spr ...

  8. Oracle 闪回总结

    一.闪回查询(Flashback Query)1.闪回查询技术1.1 闪回查询机制    闪回查询是指利用数据库回滚段存放的信息查看指定表中过去某个时间点的数据信息,或过去某个时间段数据的变化情况,或 ...

  9. 【部分】@using (Html.BeginForm())参数示例

    原文:https://www.cnblogs.com/firstcsharp/p/3238321.html 1.指定表单提交方式和路径等 @using (Html.BeginForm("In ...

  10. 《UNIX环境高级编程》(APUE) 笔记第四章 - 文件和目录

    4 - 文件和目录 1. 函数 stat.fstat.fstatat 和 lstat #inlcude <sys/stat.h> int stat(const char *restrict ...