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

简述

这个是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,生成执行器可以使用的构造信息。
SpringBoot - spring-boot-maven-plugin插件介绍_第1张图片

如何使用


<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>jarpackaging>
    
    // 该插件默认是在PACKAGE阶段执行插件的 repackage 目标。
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.bootgroupId>
				<artifactId>spring-boot-maven-pluginartifactId>
				<version>2.4.2version>
				<executions>
					<execution>
						<goals>
							<goal>repackagegoal>
						goals>
					execution>
				executions>
			plugin>
		plugins>
	build>
project>

SpringBoot - spring-boot-maven-plugin插件介绍_第2张图片

使用分析

由于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 进行打包。

你可能感兴趣的:(SpringBoot,spring,boot,maven)