Springboot之 spring-boot-maven-plugin插件解析

本文介绍了springboot spring-boot-maven-plugin插件的作用及使用

spring-boot-maven-plugin插件介绍

我们在使用springboot框架时 会发现pom.xml会自带spring-boot-maven-plugin插件

<plugins>
  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
  </plugin>
</plugins>

该插件的作用
一般的maven项目的打包命令,不会把依赖的jar包也打包进去的,只是会放在jar包的同目录下,能够引用就可以了。

但是spring-boot-maven-plugin插件,会将依赖的jar包全部打包进去。该文件包含了所有的依赖和资源文件,可以直接在命令行或者传统的 Java Web 服务器上启动运行。

spring-boot-maven-plugin作用

1、排除provided类型的依赖

默认情况下,repackage命令所生成的包,会把项目中所有的依赖都打进去。

但其实在项目中scope为provided的依赖,比如 lombok、mybatis-plus等,只作用于编译阶段,编译完成就没用了。

若除去provided依赖,可以使用如下的配置:

 <plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
		<configuration>
			<excludes>
				<exclude>
				   <groupId>org.projectlombok</groupId>
				   <artifactId>lombok</artifactId>
				</exclude>
			</excludes>
		</configuration>
</plugin>

2、指定Mainclass类

如果未指定,main将使用找到的第一个包含方法的编译类。

也就是说如果只有一个main方法,那不需要去指定,如果你这个模块存在两个主类,那么就需要在插件中指定具体哪个启动类了。

<plugin>
	   <groupId>org.springframework.boot</groupId>
	   <artifactId>spring-boot-maven-plugin</artifactId>
	   <configuration>
			    <mainClass>com.test.mavenplugin.MavenPluginApplication</mainClass>
			    <layout>ZIP</layout>
	    </configuration>
</plugin>

layout 属性用来指定打成 jar 还是war 文件,可用的值包括:ZIP 、JAR 、WAR、 NONE 。默认JAR

3、在使用spring-boot-maven-plugin的下生成无依赖的普通的jar包

如果使用该插件,那么打出来的包是一个可执行的jar包,这样的jar包,在被别的项目引用的时候,可能会出问题。

那如何打成一个普通的jar包。

当然你可以把这个插件注释掉,重新打包。不过这样做未必太愚蠢啦。

解决办法:

第一种:通过命令

mvn clean package -D spring-boot.repackage.skip=true

加上-Dspring-boot.repackage.skip=true参数即可,此时只会生成一个普通的jar包

第二种:通过配置

<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
		<configuration>
			<skip>true</skip>
		</configuration>
</plugin>

这两种方式打出来的包就是没有依赖jar的普通包了。

上一篇 下一篇


推荐文章

评论
说点什么吧?

发表评论

取消回复
  最新文章