1.over view

简而言之,Archetype是一个Maven项目模板工具包。原型被定义为一种原始的模式或模型,所有其他同类的东西都是从中产生的。当我们试图提供一个提供生成Maven项目的一致方法的系统时,这个名字就合适了。Archetype将帮助作者为用户创建Maven项目模板,并为用户提供生成这些项目模板的参数化版本的方法。

使用原型提供了一种很好的方法,可以与您的项目或组织所采用的最佳实践一致的方式快速地使开发人员受益。您可能希望在组织内部实现J2EE开发的标准化,因此您可能希望提供EJB,WAR或Web服务的原型。一旦创建了这些原型并将其部署在组织的存储库中,组织中的所有开发人员就可以使用它们。

2.do it

⚠️:我们将使用springboot项目来演示如何生成一个maven archetype(原型),本文中(模板)(原型)交替使用,二者意思相同。

示例,我们有一个现成的项目,其结构如下:

.

├── Dockerfile

├── README.md

├── last-demo.iml

├── mvnw

├── mvnw.cmd

├── pom.xml

├── src

├── main

│   ├── java

│   │   └── com

│   │   └── demo

│   │   └── data

│   │   ├── Application.java

│   │   └── your_business_package

│   │   ├── client

│   │   │   └── DemoClient.java

│   │   ├── constants

│   │   │   └── YourBusinessConstants.java

│   │   ├── enumerate

│   │   │   └── DemoStatus.java

│   │   ├── presistence

│   │   │   ├── DemoRepository.java

│   │   │   └── entity

│   │   │   └── DemoDO.java

│   │   ├── service

│   │   │   └── DemoService.java

│   │   └── web

│   │   ├── dto

│   │   │   └── DemoDTO.java

│   │   └── rest

│   │   └── DemoController.java

│   └── resources

│   ├── application.yml

│   └── logback-spring.xml

└── test

├── java

│   └── com

│   └── demo

│   └── data

│   └── ApplicationTests.java

└── resources

└── application.yml

我们将使用maven archetype来创建以该项目为基础的模板。

2.1 生成模板文件夹

执行以下maven命令:

mvn archetype:create-from-project

此时项目中会生成target/generated-sources/archetype文件夹,其中存放的就是我们的模板相关文件。

2.2 自定义模板

探索target/generated-sources/archetype我们可以得知:

generated-sources

└── archetype

├── pom.xml

├── src

│   ├── main

│   │   └── resources

│   │   ├── META-INF

│   │   │   └── maven

│   │   │   └── archetype-metadata.xml ##⚠️原型描述符,描述了我们原型的结构

│   │   └── archetype-resources ##⚠️经过maven转换后的项目文件包

│   └── test

│   └── resources

│   └── projects

│   └── basic

└── target

├── classes

│   └── archetype-resources

├── your_project_name.jar

└── test-classes

└── projects

└── basic

我们随机打开一个archetype-resources中的源文件,可以看到如下:

上图中我们看到的${package}占位符,这个就是maven原型插件自动处理的结果,到时候我们根据原型生成项目的时候,这些占位符就会变成我们新生成项目的相关的值。类似,maven还提供了groupId,artifactId, version等关键字。如果我们项目中有其他地方也需要这种定制化,我们可以手动进行更改。

例如我们把项目配置文件改为如下(应用名用占位符代替),目的是实现项目的名称随新建的项目变动。

接下来来分析archetype-metadata.xml,他是原型描述符号,我们可以指定那些文件进入原型里,那些文件需要排除,还能指定上面说的占位符需不需要被替换 等等。

如下为archetype-metadata.xml示例:

src/main/java

**/*.java

src/main/resources

**/*.xml

src/main/resources

**/*.yml

⚠️:fileSet属性标签指定的那些文件需要纳入原型中,我们把不需要的删掉。

⚠️:filtered属性标签表示是否替换文件中的占位符,若为true则会替换,否则不会,所以我们如果想要占位符最后会被替换为项目相关的信息,还需要通过这个标签指定。

⚠️:packaged属性标签指定文件是否在项目的包里面,true或false。

2.3 生成模板(原型)

我们进入target/generated-sources/archetype目录,执行以下命令:

mvn install

此时模板将在我们本地生成。

2.4 使用模板(原型)生成新项目

我们使用以下命令:

mvn archetype:generate \

-DarchetypeCatalog=local \

-DgroupId=新建项目的groupId \

-DartifactId=新建项目的artifactId \

-DarchetypeGroupId=你的原型group \

-DarchetypeArtifactId=你的原型项目名字-archetype \

-DarchetypeVersion=你的原型版本 \

-DinteractiveMode=false

之后,我们会生成新项目。项目的结构符合我们的原型结构。查看我们手动指定的application.yml

可以看到我们的占位符被我们项目的相关信息给替换了。

2.5 将模板上传至maven仓库

我们进入target/generated-sources/archetype目录,打开pom.xml

添加仓库信息:

my-releases

你的仓库地址

my-snapshots

你的仓库地址

my-snapshots

对应仓库的username

对应仓库的password

my-releases

对应仓库的username

对应仓库的password

随后指定如下命令:

mvn deploy

随后,原型将被上传至你的mavne仓库。

3.summary

本文我们介绍的maven的原型及其特性带来的好处,并且我们演示了如何生成一个原型,并且利用原型来创建一个新项目。

关注笔者公众号,推送各类原创/优质技术文章 ⬇️

maven java archetype_使用Maven Archetype创建Java项目模板相关推荐

  1. VS2017 创建安装项目模板

    参考链接: https://blog.csdn.net/Misaka2001/article/details/77870879 当你想使用VS做一道OI竞赛题目时,你的步骤是: 新建空项目 | 添加源 ...

  2. maven java archetype_使用maven创建Archetype

    Archetype原型 也就是说为项目生成一个原型,可以把这个项目发布,其他人就可以直接通过命令构建一个原型项目了. 其实我一开始也是不知道maven还有这个功能的,但是在使用的springside的 ...

  3. 使用Maven Archetype创建Java项目模板

    1.over view 简而言之,Archetype是一个Maven项目模板工具包.原型被定义为一种原始的模式或模型,所有其他同类的东西都是从中产生的.当我们试图提供一个提供生成Maven项目的一致方 ...

  4. java nashorn maven_使用mvn创建java工程的极简教程

    最近开始集中精力搞java的开源项目,在这时记录一下使用mvn创建java工程的比较简单的流程,以备不时之需,适用于我等java小白~~~ 使用mvn创建java工程 安装mvn 创建java工程命令 ...

  5. spring boot java app_利用spring boot创建java app

    利用spring boot创建java app 背景 在使用spring框架开发的过程中,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置和复杂的bean依赖关系,特别是在使用mvc的时候各 ...

  6. 【开发环境】Android 命令行中执行 Java 程序 ( IntelliJ IDEA 中创建 Java / Kotlin 工程 | dx 打包 DEX 字节码文件 | dalvikvm 命令 )

    文章目录 前言 一.IntelliJ IDEA 中创建 Java / Kotlin 工程 二.准备 Java 和 Kotlin 代码 三.编译在 PC 上可执行的 Java / Kotlin JAR ...

  7. Java开发工具IntelliJ IDEA创建Andriod项目示例说明

    IntelliJ IDEA社区版作为一个轻量级的Java开发IDE,是一个开箱即用的Android开发工具. 注意:在本次的教程中我们将以Android平台2.2为例进行IntelliJ IDEA的使 ...

  8. java二维数组的创建,java二维数组创建方法

    java动态创建二维数组,从零学java笔录-第31篇 图解二位数组在内存中存储,java二维数组动态赋值,java二维数组创建方法 二维数组的定义 type arrayName[ ][ ]; typ ...

  9. 图解Dev C++ 创建Win32 项目模板

    打开Dev C++,新建一个项目: 在Windows程序设计第五版源码中,找到第10章,PoePoem例子:把PoePoem.c代码拷贝到main.cpp中: 用它来作为一个模板:PoePoem.c比 ...

最新文章

  1. Linux软件包增量升级,Linux增量更新jar包内容
  2. Linux篇---ftp服务器的搭建
  3. (最简单)小米MIX 2S的usb调试模式在哪里开启的流程
  4. Kettle使用_10 存储过程与命名参数
  5. 【MySQL】深入浅出剖析mysql事务锁机制 - 笔记
  6. DOA——ESPRIT算法
  7. ubuntu 简单配置samba
  8. iOS新版微信底部返回横条问题
  9. 如何运行Spark程序
  10. Gartner2017年数据科学领域最酷供应商出炉,实至名归
  11. wsgiserver python 漏洞_python-简单测试wsgi
  12. 自由空间光通信OptiSystem仿真
  13. 大黑书《离散数学及其应用》之Dijkstra算法
  14. 力扣-患某种疾病的患者
  15. 解决VMware虚拟机无法联网问题
  16. 一步步解密微商城系统开发流程
  17. 苹果共享文件服务器无效,苹果发布解决方案指导用户处理macOS无法共享访问Windows的问题...
  18. 【雅思口语】安娜口语学习记录 Part3
  19. 国科gk7102s-sensor框架驱动笔记
  20. 北京计算机非全日制研究生哪个学校最好考,这所211,因校名被隐藏得很好,考上北京二环“有车有房”不是梦...

热门文章

  1. 牛客网题目——不用四则运算符号,计算两个数字的和
  2. 无线鼠标接收器对码软件_接收器太小容易丢 这几招记好就不怕
  3. caffe中solver.prototxt文件参数解释
  4. [云炬创业管理笔记]第四章把握创业机会测试5
  5. Android通用开发笔记和高性能安卓开发框架源码
  6. 手撕 CNN 经典网络之 VGGNet(PyTorch实战篇)
  7. GPS服务端解析程序编写日记之--vs2010中多种语言开发及调试的若干注意事项
  8. 收集的常用css页面及表单表格样式
  9. SqlServer中BCP导出数据的方法
  10. delphi中的指针与C类似