Maven实战: 从工程创建自定义archetype

在上一节中(创建自定义archetype)我们手动创建了一个项目模板,经过5步能创建出一个项目模板,如果我有一个现成的项目,想用这个项目作为模板来生成其他项目呢?Maven提供了基于项目生成archetype模板的能力,我们分3步来讲解

  1. 从项目生成archetype,执行mvn archetype:create-from-project生成archetype
  2. 安装archetype到仓库
  3. 使用自定义archetype

1. 从项目生成archetype

我们有一个DiveInSpring工程,项目结构如下图,有个DiveInMain.java是应用的启动类,service包下有个ProductService.java类。现在要基于这个项目生成一个archetype项目模板。

通过执行mvn archetype:create-from-project,Maven自动为我们生成archetype模板项目的工程,存放在target/generated-sources/archetype下,我们看一下生成的目录结构,可以看到很多熟悉的身影,archetype-metadata.xml、archetype-resources等等。

2. 安装archetype到仓库

target/generated-sources/archetype就是我们的项目模板,现在我们要将它安装到仓库,执行mvn install通过输出查看GAV信息

D:\Workspace\DiveInSpring\target\generated-sources\archetype>mvn install
...
[INFO] --- install:3.1.2:install (default-install) @ DiveInSpring-archetype ---
[INFO] Installing D:\Workspace\DiveInSpring\target\generated-sources\archetype\pom.xml to C:\Users\randa\.m2\repository\
com\keyniu\dis\
DiveInSpring-archetype\
0.1\
DiveInSpring-archetype-0.1.pom
...

你也可以在对应的目录下,查看生成的pom.xml文件

3. 使用自定义archetype

使用mvn archetype:generate命令,利用上面生成的模板,创建工程,使用如下命令创建新项目

mvn archetype:generate -DarchetypeGroupId=com.keyniu.dis -DarchetypeArtifactId=DiveInSpring-archetype -DarchetypeVersion=0.1-DgroupId=com.keyniu.generate.example -DartifactId=GenFromProject-Dversion=0.1 -Dpackage=com.keyniu.gen.exa -DinteractiveMode=false

4. 验证新工程

生成工程之后,我们使用IDE打开工程,或者使用mvn命令编译打包,然后执行该工程,可以看到是执行成功的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/22498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows下 CLion中,配置 OpenCV、LibTorch

首先按照win下C部署深度学习模型之clion配置pytorchopencv教程记录 步骤配置。 LibTorch 部分 在测试LibTorch时会出现类似 c10.dll not found 的问题(Debug才有): 参考C部署Pytorch(Libtorch)出现问题、错误汇总和 …

行业分析---造车新势力之理想汽车

1 前言 在之前的博客中,笔者撰写了多篇行业类分析的文章(科技新能源): 《行业分析---我眼中的Apple Inc.》 《行业分析---马斯克的Tesla》 《行业分析---造车新势力之蔚来汽车》 《行业分析---造车新势力之小鹏汽车》 此类文章的受…

js - WebWorkers

多线程: Web Workers 允许你创建一个或多个独立的线程来运行JavaScript,这些线程与主执行线程(UI线程)分离。 不阻塞UI: 因为脚本在单独的线程中运行,所以即使它们需要很长时间来执行,也不会阻塞用户界面或影响用户交…

vulntarget-b记录(Sliver学习)

网络环境 域控(Win2016) vulntarget\administrator:Admin123、(首次登陆要改密码修改为Admin123) vulntarget\win101:admin#123 边界Web主机突破 nmap扫描发现81端口 通过扫描,fuzz出来了后…

【Python学习】面向对象(OOP)

让我们从Python面向对象编程(OOP)的基础概念开始,逐步深入到继承、多态、特殊方法和运算符重载。 一、类和对象 什么是类和对象? - 类(Class):类是创建对象的蓝图或模板。它定义了一组属性和方法…

c语言如何改变文件读取位置

c语言要改变文件读取位置&#xff0c;会用到rewind语句和fseek语句 rewind语法格式是 rewind(fp)将fp指向的文件读写指针重新指向文件开头 rewind代码示例如下 #include<stdio.h> int main() {FILE *fp1,*fp2;char buf[10];int a;fp1fopen("aaa.txt","…

DJI FlyCart 30 天空 “吊车”概念板评测!

从消费级无人机&#xff0c;到专业级无人机&#xff0c;再到行业级无人机&#xff0c;大疆的探索脚步从未停下。现在&#xff0c;大疆已经正式进入民用运载无人机行列&#xff01;就在8月16日&#xff0c;大疆正式发布首款民用运载无人机 —— DJI FlyCart 30。 作为大疆第一代…

【面试题-002】Java 中,`==` 和 `equals()`区别

在 Java 中&#xff0c; 和 equals() 是两种常用的比较操作&#xff0c;但它们用于不同的目的&#xff1a; 操作符&#xff1a; 用于比较两个对象的引用是否相同&#xff0c;即它们是否指向内存中的同一个对象。对于基本数据类型&#xff08;如 int、float、char 等&#xff0…

1130. 【二维数组】打印螺旋矩阵

题目描述 打印n行的以下图形&#xff0c;n由键盘输入&#xff0c;例如n5时&#xff1a; 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 输入 输入n&#xff0c;表示n行 输出 输出符合规律的n行矩阵 样例输入 复制 5 样例输…

android使用通知和快捷方式

1.权限 android 13版本 将通知改为运行时权限&#xff0c;需要向用户动态申请权限。 // 权限请求implementation com.guolindev.permissionx:permissionx:1.7.1 2.通知工具类 通知了解&#xff1a;官网 import android.app.NotificationChannel import android.app.Notifi…

Flutter基础 -- Flutter基础特性

目录 1. 一切都是 widget 1.1 UI 组件&#xff01;&#xff01;&#xff01; 1.2 架构设计 1.3 sdk 源码目录 1.4 widget 分类&#xff01;&#xff01;&#xff01; 参考文献 2. devTools 调试工具 2.1 启动调试器 2.2 布局面板 参考文献 3. 布局约束规则 3.1 让子…

亲,你有多久没有清理过你电脑的 DNS 缓存了?

最近明月因为工作关系更换了几次使用的电脑,期间就发现明明另一台电脑访问某个网址是正常,换一台电脑后就会出现无法访问的现象,并且用的还是同一个宽带网络,实在是太诡异了!后来还是突然想起来 DNS 缓存这个问题,立马清除了那台电脑的 DNS 缓存后,打不开的网址顺利的呈…

银河麒麟V10 sp1使用pyautogui进行屏幕截图报错

** Message: 13:47:21.044: Unable to use GNOME Shells builtin screenshot interface, resorting to fallback X11. screenshot pyautogui.screenshot() screenshot.save(file_name) 使用以上代码在Ubuntu22.04操作系统上进行截屏没有任何问题&#xff08;桌面环境GNOME&am…

FPGA PCIe PIO代码的学习

目录 背景 应用场景 代码架构分析 结论 背景 本项目是基于xinlinx官方的PCIe IP 7 series integrated block for PCI Express。根据官方的例程加上官方给的example&#xff0c;对代码进行分析。 应用场景 对一些速率要求不高的&#xff0c;比如IO操作&#xff0c;推荐使用…

对新手友好的最简单方便的本地项目关联git远程仓库教程

对新手友好的最简单方便的本地项目关联git远程仓库教程 前置条件1.本地项目2.gitee上创建同名项目 关联操作1.在本地进行clone远程仓库操作2.把本地项目下的目录和文件都复制到这个克隆自git的项目文件夹里面3.查看文件状态和提交文件 在我们创建项目时&#xff0c;一般都是在本…

ubuntu编译打包的时候不想要linux-image-unsigned-xxxx.deb

ubuntu内核源码编译的时候呢打包总是打成 linux-image-unsigned-xxxx.deb 不想要linux-image-unsigned-xxxx.deb 想要linux-image-xxxx.deb 修改 control-create #!/bin/bash. debian/debian.envvars=$1 any_signed=$2. $vars[ "$provides" != ] && pro…

QAnything-1.4.01.4.1版本更新!使用指北!

久等了各位&#xff01;时隔一个多月&#xff0c;我们在4月26日和5月20日接连发布了v1.4.0和v1.4.1两个版本&#xff0c;带来了问答性能&#xff0c;解析效果等多方面的改进&#xff0c;并新增了大量的新功能和新特性 详见&#xff1a;releases 以及 使用说明 最新特性表 开发…

13-至少有5名直接下属的经理(高频 SQL 50 题基础版)

13-至少有5名直接下属的经理 select name from Employee where id in (select managerId -- 查找大于5的经理idfrom Employeegroup by managerId -- 根据id分组having count(*)>5); -- 根据分组的数据进行求个数

java连接MySQL数据库

环境准备 JDK安装 Navicat MySQL安装 下载jar包 MySQL :: Download MySQL Connector/J (Archived Versions) 创建数据库 1. 打开Navicat 2. 新建数据库 3. 定义数据库名 4. 新建查询 运行如下代码创建表log CREATE TABLE log (user VARCHAR(255) NOT NULL UNIQUE,pwd …

mysql8 .net sqlsuger 批量插入dbScope.Fastest<T>().PageSize(2000).BulkCopy(T)>

连接mysql时出现 MySqlConnector.MySqlException (0x80004005): Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation 需要再数据库开启权限 grant SUPER,SYSTEM_VARIABLES_ADMIN on *.* to rootUser;flush pri…