打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的要求,生成这些必须的属性。