SpringBoot 工程打包部署

388 阅读2分钟

打包jar

  • pom文件中设置打包类型为jar
<packaging>war</packaging>
  • 运行jar:java -jar eureka-server-1.0.0.jar --server.port=8080

  • 启动shell脚本:

打包成war

  • pom文件中设置打包类型为war
    <groupId>com.site</groupId>
    <artifactId>mapcharts</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
  • 在启动类中添加ServletInitializer
@SpringBootApplication
public class MountainApplication extends SpringBootServletInitializer {

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

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

由于我们采用web3.0 规范,是没有web.xml 的,而此类的作用与web.xml相同

  • 去除默认打包的Tomcat
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-tomcat</artifactId>  
    <scope>provided</scope>  
</dependency>  

spring-boot-starter-tomcat 是原来被传递过来的依赖,默认会打到包里,所以我们再次引入此依赖,并指定依赖范围为provided,这样tomcat 相关的jar就不会打包到war 里了.

  • 运行package 打包命令生成war包
    生成后将war 包放入tomcat,启动tomcat,测试完成的功能是否可以使用

注意:

  • spring boot最低支持的servlet版本是3.0,但tomcat6的servlet版本是2.5,tomcat7以上版本支持servlet3.0,所以打包war需要部署在Tomcat7及以上版本中。
  • spring boot 打包是把Tomcat默认打包进war中,所以在打war时需要把默认的spring-boot-starter-tomcat 排除。

SpringBoot 部署jar和Tomcat方式对比

  • jar包方式部署可以直接启动项目,方便、快捷、但是只能单个启动或写脚本启动
  • war包Tomcat方式部署,可以一个Tomcat管理多个项目

Servlet2 和 Servlet3规范

Servlet2规范

  • servlet2.5特性介绍:支持annotations
  • 项目目录必须要有WEB-INF、web.xml等文件夹和文件
  • 在web.xml中配置servlet、filter、listener,以web.xml为java web项目的统一入口

Servlet3规范

  • 项目中可以不需要WEB-INF、web.xml等文件夹和文件,在没有web.xml文件的情况下,通过注解实现servlet、filter、listener的声明,例如:@WebServlet,@WebListener,@WebFilter,当使用注解时,容器自动进行扫描。
  • 关于一些异步请求的改动
  • 关于ServletContainerInitializer的使用