【SpringBoot】打包方式

打war包

修改packaging形式

<packaging>war</packaging>

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

添加maven-war-plugin插件

 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
  </dependency>

<!--插件依赖-->
<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <configuration>
            <failOnMissingWebXml>false</failOnMissingWebXml>
          </configuration>
  </plugin>

修改项目启动类

@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包

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

<packaging>jar</packaging>

pom.xml文件插件依赖

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

项目启动类改回

@SpringBootApplication
public class MainApplication {

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

运用命令 java -jar 项目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
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文件自带很多插件依赖 有一个<pluginManagement>标签,把这个标签去掉,重新打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的要求,生成这些必须的属性。

猜你喜欢

转载自blog.csdn.net/sms15732621690/article/details/81272748