Java打war包及部署war包到tomcat
一、在启动类所在的目录下的pom.xml里更改打包方式
注:maven默认打包方式为jar包,如果pom文件中没有写明打包方式,及默认打jar包,要更改打包方式添加如下语句即可(注意是启动类所在目录下的pom文件中添加)
<packaging>war</packaging>
如下图:
二、移除SpringBoot自带的tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--移出自带的tomcat-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
<version>2.2.1.RELEASE</version>
</dependency>
如图:在dependencyManagement所管理的starter-web依赖中添加绿色方框里的内容,如果没有使用dependencyManagement进行统一管理,则直接在每个使用到starter-web依赖里逐一添加即可
三、添加javax.servlet-api或tomcat-servlet-api
注:每个引入依赖stater-web的pom文件里都要添加,以下两种选择一种进行添加即可
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>8.0.36</version>
<scope>provided</scope>
</dependency>
四、修改启动类Application.class
继承SpringBootServletInitializer,实现configure方法(实现configure可以打为war包启动)
具体原因:https://blog.csdn.net/yanyuan1993/article/details/82108829
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
}
五、开始打包
在idea右侧maven中找到根目录,按以下步骤执行,
成功后即可在启动类所在目录target中找到war包,如图:
五、将war包部署到tomcat
找到tomcat安装目录,点击进入webapps目录,将war包直接放进该目录里
如下图:我将刚才的war包重命名为ROOT.war放进了webapps里(至于为什么重命名为ROOT,因为这样直接访问8080端口就可以进入项目的界面,不用再输入项目名)
进入tomcat安装目录下的bin目录,双击startup.bat。在浏览器输入localhost:8080,就可以在浏览器访问刚刚部署的项目页面了,
注意:
linux系统下tomcat部署同理,将war包直接放到webapps下,
然后进入bin目录,执行 ./startup.sh 即可
浏览器访问:IP地址:8080
如果不想使用8080端口,可以在conf目录下的server.xml中修改,如图找到Connecter将port值修改为8089,
参考博客
https://www.jianshu.com/p/dc8aa431667a