前言
前后端分离现如今为主流架构,springboot构建web应用,可以快速的打成jar包然后启动服务。
此外,springboot还可以打成war包,在外部tomcat上部署服务,此时,项目内若存在applcation.properties配置的server.port将不起作用。
一、jar包部署
-
idea打开创建好的springboot工程,在maven中使用package打包(springboot工程默认打成jar)
-
在target中找到打包好的jar包目录,打开cmd,使用命令行: java -jar 跟上jar包名称
-
注意pom中设置的项目的jdk版本和本地环境的jdk版本需要一致
<properties> <java.version>1.8</java.version> </properties>
-
启动成功即可测试
二、war包部署
-
pom修改打包方式
<packaging>war</packaging>
-
pom文件添加servlet的jar包依赖
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency>
-
排除springboot内置的tomcat干扰
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
-
改造启动类,核心启动类 继承SpringBootServletInitializer,并重写configure方法
@SpringBootApplication public class SpringbootBaseApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SpringbootBaseApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(SpringbootBaseApplication.class); } }
-
在IDE的命令行使用mvn clean命令清除旧的包,并使用mvn package生成新的war包
- 启动本地tomcat运行 或者 将生成的war包丢到tomcat所在的webapps目录下,启动tomcat即可
jar包和war包方式对比
- 打jar包时不会把src/main/webapp下的内容打到jar包里,而打war包会
- 提供rest服务的项目需打成jar包,而又大量css、js、html而且需要经常改动的项目,打成war包运行比较方便,因为改动静态资源可以直接覆盖,很快看到改动后的效果