springboot自带的maven插件,可用于简单的JAR/WAR方式打包,官方地址为https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html

简单的应用如下:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <!--当使用springboot构建服务,则该配置可省略-->
    <version>2.1.4.RELEASE</version>
</plugin>

当执行mvn clean package命令的时候,其会默认执行该插件的repackage任务。其会在target目录下生成以下两个文件:

> ls target/*.jar
> target/demo-springboot-web-0.0.1-SNAPSHOT.jar target/demo-springboot-web-0.0.1-SNAPSHOT.jar.original

其中demo-springboot-web-0.0.1-SNAPSHOT.jar.original文件,用户可将.original后缀去掉便可得到用户自己编写的项目包。

demo-springboot-web-0.0.1-SNAPSHOT.jar文件往往比上面那个文件要大的多,其实其内部已经将用户编写的项目所相关的依赖都打进去了,百闻不如一见。

springboot maven打包插件spring-boot-maven-plugin插图

由图中可知,相应的依赖均被打入至\BOOT-INF\lib目录,而相应的源码则被编译放置到\BOOT-INF\classes目录。

上述打出的JAR包,由\META-INF\MANIFEST.MF文件的属性Main-Class可知具体的启动由springboot官方编写的org.springframework.boot.loader.JarLauncher类来启动,且其会去加载Start-Class属性指定的类来作为真正的启动类。而用户层的调用则可执行命令java -jar demo-springboot-web-0.0.1-SNAPSHOT.jar便可


而用户如果想个别指定相应的main-class便可使用以下配置:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <!--当使用springboot构建服务,则该配置可省略-->
    <version>2.1.4.RELEASE</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.example.demo.DemoSpringApplication</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>
springboot maven打包插件spring-boot-maven-plugin插图1
公众号:程序新视界


springboot maven打包插件spring-boot-maven-plugin插图2

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://choupangxia.com/2019/11/15/spring-boot-maven-plugin/