使用Maven Archetype插件制作项目脚手架(一)

Archetype是一个Maven项目模板工具包。通过Archetype我们可以快速搭建Maven项目。比如我们在ide里面创建项目时,可以选择很多maven内置的Archetype,我们最常用的可能是maven-archetype-quickstart

a58dc2a0aa4d348644d7f40f928e0f1a.png

当然maven提供了能力,让我们自定义项目结构,比如下图如果我们想要基于Archetype来自动生成下面多模块结构的脚手架,我们可以先手动建立下面的代码结构

c7b966a73047a1aca98e23b92af84a07.png

然后把下面插件加入到上面项目主pom中:

<build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-archetype-plugin</artifactId><version>3.0.1</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.6.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version><configuration><encoding>UTF-8</encoding></configuration></plugin></plugins></pluginManagement></build>

然后在该项目的根目录下执行如下命令,来生成Archetype的模板:

mvn archetype:create-from-project

执行完毕后,在\target\generated-sources\archetype目录下会生成内容如下,该内容就是Archetype模板:

f74f141ae27c0a1c25cf74008ca8b131.png

在该目录下执行mvn install把模板安装到本地仓库,然后就可以执行下面命令来生成自己应用的项目结构了:

mvn archetype:generate -DarchetypeGroupId=com.jiaduo -DarchetypeArtifactId=project-template-archetype -DarchetypeVersion=1.0-SNAPSHOT -DarchetypeCatalog=local -DgroupId=com.jiaduo -DartifactId=order -Dversion=1.0-SNAPSHOT -DinteractiveMode=false

生成后的项目结构如下:

eb6df2670716e5d5211fcada716ca80d.png

当然如果你想要使用代码的调用方式,可参考如下:

public class Main {public static void main(String[] args) {String DgroupId ="com.jiaduo";String DartifactId ="Order";String Dversion ="1.0-SNAPSHOT";String targetDir ="/user/workspace";MavenCli cli = new MavenCli();System.setProperty("maven.multiModuleProjectDirectory","/user");int r = cli.doMain(new String[]{"archetype:generate","-DgroupId="+DgroupId,"-DartifactId="+DartifactId,"-Dversion="+Dversion,"-DarchetypeGroupId=com.template","-DarchetypeArtifactId=project-template-archetype","-DarchetypeVersion=1.0-SNAPSHOT","-DinteractiveMode=false"}, targetDir, System.out, System.out);System.out.println(r);if (r !=0){throw new RuntimeException("生成工程结构失败");}else{System.out.println("生成工程结构成功");}}}

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

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

相关文章

Mac[M1]安装mongodb

要在Mac&#xff08;M1芯片&#xff09;上安装MongoDB&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开终端&#xff1a;你可以在“应用程序”文件夹中找到“终端”应用程序&#xff0c;或者使用Spotlight搜索并打开它。安装Homebrew&#xff1a;在终端中运行以下命令安…

帮我超越技术壁垒的“泰斗”服务--Amazon ElastiCache

前言 作为开发者&#xff0c;外加上云服务的使用者&#xff0c;对于借助云服务来提升日常开发中的效率是一个非常关键且重要的事情。在日常实际开发中&#xff0c;关于缓存服务领域想必作为开发者应该都不陌生&#xff0c;比如常用到的 Redis 就是缓存服务之一。对于互联网领域…

使用ffmpeg实现视频旋转并保持清晰度不变

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 ffmpeg -i source.mp4 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-…

2024年测量、信号处理与深度学习国际会议(ICMSPDL 2024)

2024年测量、信号处理与深度学习国际会议&#xff08;ICMSPDL 2024&#xff09; 2024 International Conference on Measurement, Signal Processing, and Deep Learning ICMSPDL 2024是一个汇集行业和学术界的顶级论坛。会议将邀请国内外知名专家就信号处理、测量、深度学习方…

Gin框架之使用 go-ini 加载.ini 配置文件

首先,联想一个问题,我们在部署服务时,通常为了方便,对于需要迭代更新的代码进行修改,但是比对shell,可以搞一个变量将需要修改的,以及修改起来变动处多的,写在变量内,到时候如果需要变更,可以直接变更变量即可; 那么,golang有没有什么方式可以将需要变的东西保存起…

数据库基础面试第二弹

1. 乐观锁和悲观锁的理解及使用 乐观锁和悲观锁是在并发编程中使用的两种并发控制机制&#xff0c;用于解决多线程或多进程环境下的数据一致性问题。 1. 悲观锁&#xff08;Pessimistic Locking&#xff09;&#xff1a;   悲观锁的思想是假设并发访问会导致冲突&#xff0…

贪吃蛇小游戏的代码实现之知识点铺垫篇

今天给大家介绍一个很经典的小游戏&#xff0c;它和扫雷在经典小游戏这方面可以说是旗鼓相当&#xff0c;它的名字就是贪吃蛇。贪吃蛇游戏最初为单机模式&#xff0c;后续又陆续推出团战模式、赏金模式、挑战模式等多种玩法。该游戏具体玩法是&#xff1a;用游戏把子上下左右控…

工作记录----CountDownLatch(特别好用的一个工具类)

CountDownLatch 是 Java 并发包中的一个同步工具类,它可以让一个或多个线程等待其他线程完成操作。它的核心思想是,一个线程(或多个线程)在执行某个任务时,可以通过它等待其他线程的信号,直到其他线程的任务完成才继续执行。用于实现线程间的等待和通知机制。 主要特点:…

前端常用的工具网站

前端常用的工具网站&#x1f516; 文章目录 前端常用的工具网站&#x1f516;1. 图片在线压缩2. iconfont--矢量图标3. JSON在线格式化4. EMOJIALL--表情符号5. removebg--去除图片背景6. FREE API--免费API接口7. Lorem picsum --随机图片8.UU在线工具 -- 聚合工具 1. 图片在线…

生活服务网站搭建的作用是什么

如今生活服务商家面临获客、信息展示及多渠道传播信息的难题&#xff0c;传统线下形式如街道发传单、人口相传等形式非常低效&#xff0c;容易投入成本得不到回报&#xff0c;且数据难以统计。 互联网时代&#xff0c;线上渠道平台汇聚亿级流量&#xff0c;生活服务商家也需要一…

C++ std::string使用效率优化

字符串操作是任何一个C开发程序无法绕过的点&#xff0c;很多时候针对字符串的操作需要进行优化&#xff0c;从而达到更优的使用效率和内存利用率。一般会采用标准的std::string替代C字符串&#xff0c;一方面是std::string为一个成熟的类对象&#xff0c;其成员操作基本能满足…

什么是“私域流量”?

公域流量&#xff0c;字面意思就是人人都可以用的流量&#xff0c;但要付出一定成本&#xff0c;而且不一定可持续。 具体到实际对象&#xff0c;则是线下流量以及BAT等几个互联网流量大户&#xff0c;尤其是后者&#xff0c;比如微信、QQ、天猫、淘宝、百度、抖音、快手、微博…

vue-awesome-swiper轮播组件

安装版本&#xff1a;"swiper": "^6.0.0", 安装版本&#xff1a;"vue-awesome-swiper": "^4.1.1", <div class"swiper_conter"><swiper class"swiper" :options"swiperOption" ref"mySw…

二、C#基础语法( 变量与数据类型)

C# 是一种强类型的编程语言,这意味着在声明变量时必须指定其数据类型。数据类型是用于定义变量可以持有的数据类型的系统。C# 支持多种内置数据类型,同时也支持用户自定义的数据类型。 变量 变量是用来存储数据的容器。在 C# 中,每个变量都有一个特定的数据类型,这决定了…

算法leetcode|94. 二叉树的中序遍历(多语言实现)

文章目录 94. 二叉树的中序遍历&#xff1a;样例 1&#xff1a;样例 2&#xff1a;样例 3&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 94. 二叉树的中序遍历&#xff1a; …

Spring高手之路-Spring AOP

目录 什么是AOP Spring AOP有如下概念 补充&#xff1a; AOP是如何实现的 Spring AOP 是通过代理模式实现的。 Spring AOP默认使用标准的JDK动态代理进行AOP代理。 什么是AOP AOP(Aspect-Oriented Programming)&#xff0c;即面向切面编程&#xff0c;用人话说就是把公共的…

开发人工智能 需要什么工具

人工智能&#xff08;Artificial Intelligence, AI&#xff09;是指利用计算机模拟、扩展和延伸人类智能的理论、方法、技术和应用系统的一门学科。人工智能研究的目标是使计算机能够像人类一样具有智能&#xff0c;能够感知和理解环境、学习和推理、决策和规划&#xff0c;具备…

jar 运行清单文件MANIFEST.MF生成定义Main-Class Premain-Class IDEA maven-assembly-plugin

可运行jar文件中的启动清单文件 META-INF/MANIFEST.MF 内容自定义生成 清单文件中的 Main-Class: Premain-Class: Can-Retransform-Classes: 在maven-assembly-plugin插件中的生成配置如下, 注意命名 <archive> <manifest> <mainClass>c…

MySQL中的like模糊查询

like与通配符搭配使用进行模糊查询 通配符 % 表示任意多个字符 _ 表示任意单个字符 #用户名中包含a的 select * from user where name like %a% #用户名中第二个字符为a的 select * from user where name like _a% #用户名中第二个字符为_的(需要使用转义字符) select * from u…

强烈推荐,提高开发效率的IDEA插件

自动生成JVM诊断工具arthas的命令 arthas idea (2.36) 基于IntelliJ IDEA开发的Alibaba Arthas 命令生成插件&#xff0c;支持Alibaba Arthas 官方常用的命令。 官方的命令太复杂&#xff0c;此插件为了简化使用者的难度&#xff0c;提供了一些常用命令的支持 该插件支持Aliba…