springcloud项目需要打包到war放到tomcat运行,需要如何修改
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
为了将Spring Cloud项目打包成WAR文件并部署到Tomcat运行,您需要进行以下步骤的修改和配置:
在pom.xml
中,确保打包类型设置为war
。如果之前是默认的jar
类型,需做如下修改:
<packaging>war</packaging>
spring-boot-starter-tomcat
依赖,并将其设置为provided
范围,以避免嵌入式Tomcat与外部Tomcat冲突:<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
SpringBootServletInitializer
并重写configure
方法,以便Spring Boot应用能正确启动于外部Servlet容器:import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(YourApplication.class);
}
}
其中YourApplication
应替换为您的Spring Boot主类名。
确保静态资源(如HTML、CSS、JavaScript等)位于src/main/webapp
下,因为这是Tomcat默认查找静态资源的位置。
使用Maven命令打包应用:
mvn clean package -DskipTests
这将生成一个.war
文件在target
目录下,例如your-app.war
。
如果您计划通过Docker部署,参考提供的Dockerfile示例,调整以适应WAR包部署。例如,使用EDAS基础镜像并指定WAR包位置:
FROM apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas-centos-openjdk8-tomcat8:latest
ENV APP_HOME /home/admin/app/
ADD target/your-app.war ${APP_HOME}/
确保替换your-app.war
为实际的WAR文件名。
webapps
目录下。http://your-server-address:port/your-app-context-path
,其中your-app-context-path
是根据WAR文件名自动生成或在server.xml
中自定义的上下文路径。通过以上步骤,您可以成功地将Spring Cloud项目打包为WAR文件并在Tomcat服务器上运行。