SpringBoot - spring-boot-maven-plugin插件介绍

news2025/2/12 20:06:33

简述

这个是SpringBoot的MAVEN插件,主要用来打包的,通常用来将项目打包成JAR或者WAR文件(生成FAT 包)。
这个插件生成的包是可执行的JAR。

Spring Boot Maven Plugin Documentation:https://docs.spring.io/spring-boot/docs/2.4.2/maven-plugin/reference/htmlsingle/

SpringBoot项目中spring-boot-maven-plugin插件的作用是什么?:https://blog.csdn.net/goodjava2007/article/details/122205769

作用

(1)使用该插件打包的JAR或者WAR文件中包含了所有的依赖和资源文件,可以直接在命令行或者WEB服务器上启动运行,如果不使用该插件,而是采用手动配置打包项目所有的依赖项和资源文件,将会非常繁琐、复杂且易错。也就是说,SPRING BOOT借助spring-boot-maven-plugin插件,将所有应用启动运行所需要的JAR都打包在一起,从逻辑上该JAR具备了独立运行的条件。
(2)该插件可以指定要执行的类,如果未指定也能够自动检测项目中的 main 函数,并启动SPRING BOOT容器。

功能

该插件有7个GOAL,常用的5个目标如下:
(1)spring-boot:run,运行SPRING BOOT应用程序;
(2)spring-boot:repackage,插件的默认值,就是在执行mvn package之后再次打包,使其可执行,并把第一次生成的包加上后缀.origin;
(3)spring-boot:start,管理SPRING BOOT应用程序的生命周期,此目标通常用于集成测试方案中,在该方案中,应用程序在测试套件之前启动,然后在测试套件之后停止;
(4)spring-boot:stop,管理SPRING BOOT应用程序的生命周期,停止已由 start 目标启动的 Spring 应用程序。 通常在测试套件完成后调用;
(5)spring-boot:build-info,生成执行器可以使用的构造信息。
在这里插入图片描述

如何使用

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	// 用于指定生成JAR还是WAR文件。
    <packaging>jar</packaging>
    
    // 该插件默认是在PACKAGE阶段执行插件的 repackage 目标。
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.4.2</version>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

在这里插入图片描述

使用分析

由于repackage目标默认绑定在default生命周期的package阶段,所以运行mvn的package时,便会按照如上配置执行repackage目标。

如何打包

# 使用如下指令在命令行中进行打包:
mvn clean package

(1)该插件可以理解为是对 mvn package命令的二次封装,在其基础上增加了适配于SPRING BOOT项目的 MAVEN 命令(目标),目的是对 MAVEN 打出的原始包进行二次修改,如:重新打包成新的、可执行的JAR文件等。
(2)如果是SPRING BOOT项目( 且使用了 spring-boot-starter-parent包),默认在执行 mvn package 时,会先执行package的常规操作,然后执行 spring-boot的 repackage 操作。

报错分析

(1)指令
# 使用如下指令在命令行中执行:
mvn clean package spring-boot:repackage
(2)错误
[INFO] Reactor Summary for servicex 2.5.1:
[INFO]
[INFO] servicex ........................................... SKIPPED
[INFO] servicex-common .................................... SKIPPED
[INFO] servicex-common-excel .............................. SKIPPED
[INFO] servicex-common-core ............................... SKIPPED
[INFO] servicex-api ....................................... SKIPPED
[INFO] servicex-api-system ................................ SKIPPED
[INFO] servicex-common-redis .............................. SKIPPED
[INFO] servicex-common-security ........................... SKIPPED
[INFO] servicex-auth ...................................... SKIPPED
[INFO] servicex-gateway ................................... SKIPPED
[INFO] servicex-visual .................................... SKIPPED
[INFO] servicex-visual-monitor ............................ SKIPPED
[INFO] servicex-common-datasource ......................... SKIPPED
[INFO] servicex-common-datascope .......................... SKIPPED
[INFO] servicex-common-log ................................ SKIPPED
[INFO] servicex-common-swagger ............................ SKIPPED
[INFO] servicex-modules ................................... SKIPPED
[INFO] servicex-modules-system ............................ SKIPPED
[INFO] servicex-modules-gen ............................... SKIPPED
[INFO] servicex-modules-quartz ............................ SKIPPED
[INFO] servicex-modules-file .............................. SKIPPED
[INFO] servicex-common-word ............................... SKIPPED
[INFO] servicex-mall ...................................... SKIPPED
[INFO] servicex-yqx ....................................... SKIPPED
[INFO] servicex-test ...................................... SKIPPED
[INFO] servicex-test-config ............................... SKIPPED
[INFO] servicex-test-datasource ........................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.433 s
[INFO] Finished at: 2023-06-14T10:05:55+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] No plugin found for prefix 'spring-boot' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (D:\99-M2\repository), aliyun (http://maven.aliyun.com/nexus/content/groups/public/)] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoPluginFoundForPrefixException
(3)原因
# 由于pom.xml文件里缺少了如下的parent依赖,那么就需要在项目中手动添加如下依赖。
<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>2.4.2</version>
</parent>

(1)项目的父项目依赖spring-boot-starter-parent,这种情况下不会出这个错误;
(2)项目的父项目不是 spring-boot-starter-parent,但某一级父级项目的父项目是 spring-boot-starter-parent,同上。
(3)项目的父项目不是 spring-boot-starter-parent,也不存在某一级父级项目的父项目是 spring-boot-starter-parent,那么需要检查该项目是否包含spring-boot-maven-plugin插件(本项目未包含时,需要手动添加)。

(4)疑问

(1)mvn clean package spring-boot:repackage,可以使用这个命令在命令行执行吗?
答:在单项目中可以使用该命令执行打包,但是,在多层项目甚至多模块的项目中,一般建议直接使用:mvn clean package 进行打包。

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

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

相关文章

了解和使用 Kubernetes

文章目录 前言Kubernetes 集群安装Kubernetes 功能Kubernetes 核心概念Kubernetes 部署应用发布部署脚本发布服务使用 Ingress配置自动伸缩 Kubernetes 常用命令Kubernetes 故障排查 前言 通过 《容器集群管理工具 Docker Swarm》可以知道&#xff0c;在部署、调度、扩展和管理…

计算机时间到底是怎么来的?程序员必看的时间知识!

参考文章&#xff1a;https://xie.infoq.cn/article/22d762b26daee8b3f404f60a6 <title>计算机时间到底是怎么来的&#xff1f;程序员必看的时间知识&#xff01;_操作系统_Kaito_InfoQ写作社区</title><meta name"description" content"大家好&…

【阿里云OSS: Java端提供签名,vue+elementUI+axios 实现直传文件到OSS 实例】

文章目录 java代码&#xff08;包含后端上传文件、删除文件、提供签名&#xff09;前端代码postman 测试截图 java代码&#xff08;包含后端上传文件、删除文件、提供签名&#xff09; {private final static String OSS_BUCKET_NAME "test";private final static …

Day06 Python入门必知必会

文章目录 第一章 Python环境搭建1.1. 计算机基础1.1.1. 什么是编程1.1.2. 什么是进制1.1.2.1. 进制的简介1.1.2.2. 进制的分类1.1.2.3. 进制的表示1.1.2.4. 进制的转换1.1.2.5. 原反补(了解)数据的转换负数的表示补码的引入 1.2. Python的介绍1.3. Python的安装与使用1.3.1. Py…

PMP证书能直接升级项目管理专业人员能力评价(CSPM)三级吗?

2021年10月&#xff0c;中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系&#xff0c;开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会&#xff08;CAS&#xff09;组织开展的项…

【6.14 代随_57day】 回文子串、最长回文子序列

回文子串、最长回文子序列 回文子串1.方法图解步骤代码 最长回文子序列1.方法图解步骤代码 回文子串 力扣连接&#xff1a;647. 回文子串&#xff08;中等&#xff09; 1.方法 确定dp数组以及下标的含义 dp数组是要定义成一位二维dp数组。 布尔类型的dp[i][j]&#xff1a;表示…

Three.js教程:光源对物体表面影响

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 其他系列工具&#xff1a; NSDT简石数字孪生 光源对物体表面影响 实际生活中物体表面的明暗效果是会受到光照的影响&#xff0c;threejs中同样也要模拟光照Light对网格模型Mesh表面的影响。 你可以打开课件中案例源码&am…

5.2.12 IP分组的转发(三)

5.2.12 IP分组的转发&#xff08;三&#xff09; 示例&#xff1a;例&#xff1a;某网络拓扑如图所示&#xff0c;从图中我们可以看出该网络拓扑中有两个局域网&#xff0c;由两台路由器&#xff0c;其中路由器R1有两个以太网口&#xff0c;分别是E1和E2连接了两个局域网&…

这是我见过最通俗易懂的装饰者模式讲解!

关注“Java架构栈”微信公众号&#xff0c;回复暗号【Java面试题】即可获取大厂面试题 前言 本文主要讲述装饰者模式&#xff0c;文中使用通俗易懂的案例&#xff0c;使你更好的学习本章知识点并理解原理&#xff0c;做到有道无术。 什么是装饰者模式 装饰者模式是23种设计模式…

jmeter如何进行http压力测试

目录 前言&#xff1a; 1、添加线程组&#xff1a; 2、添加采样器&#xff1a; 3、添加监视器 压力测试知识说明 前言&#xff1a; JMeter是一个基于Java的开源压力测试工具&#xff0c;可用于评估Web应用程序的性能&#xff0c;包括HTTP、HTTPS、FTP、SOAP、Restful、JD…

试试前端自动化测试(基础篇)

众所周知的原因&#xff0c;前端作为一种特殊的 GUI 软件&#xff0c;做自动化测试困难重重。在快速迭代&#xff0c;UI 变动大的业务中&#xff0c;自动化测试想要落地更是男上加男 &#x1f436;。 近期的学习过程中&#xff0c;翻阅了众多前端自动化测试相关的文章&#xf…

JAVA中的拦截器、过滤器

JAVA变成拦截器、过滤器 一、拦截器1、简介说明2、源码及方法说明3、拦截器自定义应用 二、过滤器1、简介说明2、源码及方法说明3、过滤器的自定义应用 三、Springboot中的WebMvcConfigurer1、简介2、主要方法3、添加拦截器 四、区别1、原理2、触发3、其他 一、拦截器 1、简介…

Scala学习笔记

累了&#xff0c;基础配置不想写了&#xff0c;直接抄了→Scala的环境搭建 这里需要注意的是&#xff0c;创建新项目时&#xff0c;不要用默认的Class类&#xff0c;用Object&#xff0c;原因看→scala中的object为什么可以直接运行 一、Scala简介 1.1 图解Scala和Java的关系 1…

HQChart实战教程63-自定义手机端K线tooltip显示数据

HQChart实战教程63-自定义手机端K线tooltip显示数据 手机端K线tooltip步骤1. 配置手机端tooltip2. 替换k线tooltip格式化输出函数2. 格式化输出函数说明HQChart插件源码地址完整的demo源码手机端K线tooltip hqchart手机端内置一个tooltip,显示手势所在K线的信息。默认显示 日期…

了解D-Galactopyranose pentaacetate,CAS号25878-60-8的性质和应用

​ 中文名称&#xff1a;1,2,3,4,6-D-葡萄糖五乙酸酯 英文名称&#xff1a;D-Galactopyranose pentaacetate 规格标准&#xff1a;1g、5g、10g CAS&#xff1a;25878-60-8 分子式&#xff1a;C16H22O11 分子量&#xff1a;390.34 熔点&#xff1a;113C 沸点&#xff1a;451C 密…

迷宫生成算法

迷宫生成 ① 十字分割 递归版本 ② BFS&#xff08;即广度算法&#xff09; 十字分割方法生成 要求初始时迷宫内全是通路&#xff0c;然后随机十字建墙&#xff0c;然后随机在三面墙上打洞&#xff0c;使四个子空间连通。 要求&#xff1a;十字点横纵坐标均要求为偶数&…

【unity】URP的shader开发中支持多光源,_ADDITIONAL_LIGHTS_VERTEX 和 _ADDITIONAL_LIGHTS 区别

项目里有一个其他同事实现的shader&#xff0c;美术那边希望能支持多个光源&#xff0c; 我一看代码里面&#xff0c; frag 函数里已经实现了 #ifdef _ADDITIONAL_LIGHTSuint pixelLightCount GetAdditionalLightsCount();for (uint lightIndex 0u; lightIndex < pixelL…

什么决定了我们的命运?

一、什么决定了我们的命运&#xff1f; 一个学生时代看起来特别优秀的人&#xff0c; 后来成了特别平凡的人&#xff1b; 而那时候看起来平淡无奇的一些人&#xff0c; 后来做出了一些似乎超越了他水平的事情。 不禁想问&#xff0c;到底是什么决定了我们的命运&#xff1f; 关…

Transformer在CV领域有可能替代CNN吗?

目前已经有基于Transformer在三大图像问题上的应用&#xff1a;分类&#xff08;ViT&#xff09;&#xff0c;检测&#xff08;DETR&#xff09;和分割&#xff08;SETR&#xff09;&#xff0c;并且都取得了不错的效果。那么未来&#xff0c;Transformer有可能替换CNN吗&#…

uniapp创建vue3项目(持续更新)

一.项目全局配置 1. 创建项目 使用Hbuilderx工具创建项目, 使用Hbuilderx工具创建项目&#xff0c;选择uni-ui项目模版&#xff0c;VUE3 2.底部菜单栏配置tabBar uniapp官网&#xff1a; 全局文件--pages.json页面路由 -- tabBar 项目文件&#xff1a;pages.json--文件底部…