SpringBoot.13.SpringBoot将web项目打包成war包部署到外部Tomcat
SpringBoot.13.SpringBoot将web项目打包成war包部署到外部Tomcat
- 修改pom文件
- 修改Application类
- 打包
- 部署
我们知道SpringBoot是一个快速开发框架,web项目可以直接打包成jar包直接放到服务器上执行 java -jar
就运行了,那是因为SpringBoot内置了Tomcat服务器。那么这里有人就想杠一下了,我就想部署到自己服务器上的Tomcat怎么办?不急,一步一步来
修改pom文件
想要将SpringBoot的Web项目运行到外部的Tomcat,首先要修改pom文件,有以下几个地方
首先打包方式要由之前的jar改成war
<!-- <packaging>jar</packaging> -->
改成
<packaging>war</packaging>
其次移除SpringBoot内置的Tomcat,或者将Tomcat的
scope
改为provided
<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>
</dependency>
或者
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
以上两种方案都是可行的。对于maven中的scope,这里简单介绍以下
maven中的scope有compile、provided、runtime、test、system五种,每种的作用范围不一样
- compile
默认的scope,表示这些dependency贯穿程序的整个生命周期。而且这些依赖会传递到依赖的项目中,会随着项目一起发布 - provided
跟compile相似,但这些依赖是由JDK或者容器提供,例如Servlet AP和一些Java EE API。这个scope 只能作用在编译和测试时,没有传递性 - runtime
表示这些依赖仅作用在运行和测试时,如JDBC驱动,适用运行和测试阶段。 - test
表示依赖仅作用在测试时,不会随项目发布。 - system
跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它。
添加标签
在使用外部Tomcat部署访问的时候,application.properties(或者application.yml)中配置的server.port
与server.servlet.context-path
将失效,请使用tomcat的端口与webapps下项目名进行访问。为了防止应用上下文所导致的项目访问资源加载不到的问题,建议pom.xml文件中标签下添加标签<build>
<finalName>hello-nginx</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
修改Application类
SpringBootServletInitializer源码注释:Note that a WebApplicationInitializer is only needed if you are building a war file and deploying it. If you prefer to run an embedded web server then you won't need this at all
意思就是如果你正在构建war文件并部署他,则需要继承WebApplicationInitializer;如果你喜欢运行一个嵌入式Web服务器,那么你不需要这个。
那么,来吧!开始改造我们的启动类
@SpringBootApplication
public class NginxApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(NginxApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(NginxApplication.class);
}
}
打包
以上工作做完后我们就可以将项目打包了,按下图的红色箭头指示一步一步操作就行了
部署
- 启动我们的虚拟机
[Christy090(server)](https://blog.csdn.net/bbxylqf126com/article/details/109062171)
,切换到/usr/apps/tomcat/webapps
目录下执行rz
命令上传我们的hello-bginx.war
- 执行命令
startup.sh | tail -f /usr/apps/tomcat/logs/catalina.out
启动Tomcat服务器,能看到我们久违的图标并且不报错的话,那么恭喜你启动成功了 - 浏览器中输入
http://192.168.10.190:8080/hello-nginx/nginx/index
,大功告成!!!
还没有评论,来说两句吧...