一、Jar和War的区别
从网上看到的,感觉解释得比较好的:
jar包自带tomcat容器,适用于单个项目,但是如果你想要把多个项目部署到一个tomcat容器上,就需要打成war包了,多个war包部署到同一个tomcat容器上,节省资源
二、Jar部署
在pom.xml中,在创建SpringBoot Web项目时会自动生成如下代码
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
这个插件就是用来生成Jar文件的
- 把鼠标放在左下角的小图标上面,找到Maven,点击进入Maven Project窗口
- 先双击执行clean,然后再双击执行install
- 在项目的target目录下可以找到刚刚打包好的jar包
- 把jar包复制到桌面上,然后在桌面空白处shift+鼠标右键——点击在此处打开PowerShell窗口,输入命令
即成功运行该jar包
二、War部署
-
在pom.xml中修改打包形式
把打包方式从默认的jar方式改为war方式 -
排除内置的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>
- 添加servlet-api依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
- 修改启动类
package com.example.demo3web;
import javafx.application.Application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class Demo3WebApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Demo3WebApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){
//注意这里要指向原先使用main方法执行的Application类
return builder.sources(Demo3WebApplication.class);
}
}
注意修改
- 打包
跟上面的jar包一样,也是Maven Project——生命周期——先clean,再install
- 部署
在target下将生成的war包复制到tomcat文件夹(这个要自己找找)下的webapps中
然后返回到tomcat文件夹,进入bin文件夹,双击启动startup.bat文件
7. 打开浏览器访问