Maven打包插件spring-boot-maven-plugin

Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。

spring-boot-maven-plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行

  1. 一般模块打包配置
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.1.6.RELEASE</version>
</plugin> 

配置成这个样子打包,使用java -jar 命令执行jar包时会报 x.jar中没有主清单属性错误。
打开x.jar也可以发现,在打成的jar中META-INF/MANIFEST.MF不含有Main Class信息,打成的jar包大小很小,依赖的jar包都没有包含进来。

修该pom.xml文件中的配置成

  1. 主模块打包配置
<plugin>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-maven-plugin</artifactId>
     <version>2.1.6.RELEASE</version>
     <configuration>
        <!-- 如果没有该配置,devtools不会生效 -->
        <!-- 指定该Main Class为全局的唯一入口 -->
     	<mainClass>com.test.Application</mainClass>
        <layout>ZIP</layout>
     </configuration>
     <executions>
         <execution>
            <goals>
               <!--可以把依赖的包都打包到生成的Jar包中-->
               <goal>repackage</goal>
            </goals>
        </execution>
      </executions>
</plugin>

需要打包的主模块需要制定主程序入口:
指定该Main Class为全局的唯一入口

Spring Boot Maven plugin的最主要goal就是repackage,其在Maven的package生命周期阶段,能够将mvn package生成的软件包,再次打包为可执行的软件包,并将mvn package生成的软件包重命名为*.original

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.1.6.RELEASE</version>
</plugin> 

如果是多模块的项目打包,把这段配置放到需要打包的模块的pom文件中,在主模块中需要指定mainClass入口

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