spring-boot-maven-plugin的使用

起源:做springboot项目的时候spring-boot-maven-plugin插件爆红,查了相关资料,了解的问题不大,在依赖底部加一个版本号就可以了。

正好通过这个问题进一步了解一下spring-boot-maven-plugin。以前只知道项目做完以后可以clean,package生成对应的jar包。现在进一步了解了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>

spring-boot-maven-plugin插件的作用:

Spring Boot项目可以通过java -jar 包名启动

我们就可以用spring-boot-maven-plugin先clean一下然后package打包,打包成功后就会在对应的target目录生成一个jar包。

在target目录下通过:java -jar 包名启动项目

可以正常启动该springboot项目。

如果我们去掉spring-boot-maven-plugin插件,通过clean package 再打一次包。

依然可以打包,包名也一样,但是包的大小却不同

通过java -jar 包名后发现无法正常启动项目,这是因为一般的maven项目的打包命令,不会把依赖的jar包也打包进去的,只是会放在jar包的同目录下,能够引用就可以了。

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

插件标签详解:

            <plugins>

                <!--plugin元素包含描述插件所需要的信息。 -->

                <plugin>

                    <!--插件在仓库里的group ID -->

                    <groupId />

                    <!--插件在仓库里的artifact ID -->

                    <artifactId />

                    <!--被使用的插件的版本(或版本范围) -->

                    <version />

                    <!--作为DOM对象的配置 -->

                    <configuration />

                </plugin>

            </plugins>

常见使用场景

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方法,那不需要去指定,如果你这个模块存在两个主类,那么就需要在插件中指定具体哪个启动类了。

使用如下配置可以指定Mainclass类的位置:

<plugin>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-maven-plugin</artifactId>

       <configuration>

                <mainClass>com.zhuangpo.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包。

可以通过配置:

<plugin>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-maven-plugin</artifactId>

        <configuration>

            <skip>true</skip>

        </configuration>

</plugin>

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值