SpringBoot - spring-boot-maven-plugin插件介绍
作者:mmseoamin日期:2023-12-20

简述

这个是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张

如何使用



	// 用于指定生成JAR还是WAR文件。
    jar
    
    // 该插件默认是在PACKAGE阶段执行插件的 repackage 目标。
	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
				2.4.2
				
					
						
							repackage
						
					
				
			
		
	

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依赖,那么就需要在项目中手动添加如下依赖。

   org.springframework.boot
   spring-boot-starter-parent
   2.4.2

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