【SpringBoot】打包方式

打war包

修改packaging形式

war

添加spring-boot-starter-tomcat的provided依赖

添加maven-war-plugin插件

 
      org.springframework.boot
      spring-boot-starter-tomcat
      provided
  



          org.apache.maven.plugins
          maven-war-plugin
          
            false
          
  

修改项目启动类

@SpringBootApplication
public class MainApplication extends SpringBootServletInitializer{

    public static void main(String[] args)throws Exception{
        SpringApplication.run(MainApplication.class,args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(MainApplication.class);
    }

}

用maven命令或者依赖IDE插件 打包,将生成的war包部署到tomcat里 启动,在地址栏中输入http://localhost:tomcat端口/项目名/XX

打Jar包

同理,修改项目的打包方式

jar

pom.xml文件插件依赖


       org.springframework.boot
       spring-boot-maven-plugin

项目启动类改回

@SpringBootApplication
public class MainApplication {

    public static void main(String[] args)throws Exception{
        SpringApplication.run(MainApplication.class,args);
    }
   
}

运用命令 java -jar 项目jar包

【SpringBoot】打包方式_第1张图片

用解压工具解压jar包,查看META-INF文件夹中MANIFEST.MF文件

Manifest-Version: 1.0
Implementation-Title: miaosha
Implementation-Version: 1.0-SNAPSHOT
Built-By: sms
Implementation-Vendor-Id: com.imooc
Created-By: Apache Maven 3.5.0
Build-Jdk: 1.8.0_101
Implementation-URL: http://www.example.com
Implementation-Vendor: Pivotal Software, Inc.

文件中没有 Main-Class 等的配置,生成的 jar包不可以

我用IDEA创建maven项目的时候pom文件自带很多插件依赖 有一个标签,把这个标签去掉,重新打jar包,

打开jar包中的META-INF文件夹中MANIFEST.MF文件

Manifest-Version: 1.0
Implementation-Title: miaosha
Implementation-Version: 1.0-SNAPSHOT
Built-By: sms
Implementation-Vendor-Id: com.imooc
Spring-Boot-Version: 1.5.9.RELEASE
Implementation-Vendor: Pivotal Software, Inc.
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.imooc.miaosha.MainApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven 3.5.0
Build-Jdk: 1.8.0_101
Implementation-URL: http://www.example.com

Main-Class:代表了Spring Boot中启动jar包的程序
Start-Class:属性就代表了Spring Boot程序的入口类,这个类中应该有一个main方法
Spring-Boot-Classes:代表了类的路径,所有编译后的class文件,以及配置文件,都存储在该路径下
Spring-Boot-Lib:表示依赖的jar包存储的位置

     这些值都是SpringBoot打包插件会默认生成的,如果没有这些属性,SpringBoot程序自然不能运行,就会报错:jar中没有主清单属性,也就是说没有按照SpringBoot的要求,生成这些必须的属性。

你可能感兴趣的:(——springboot)