将springboot项目部署为war项目

springboot 带有内置Tomcat 服务器,可以直接将项目打包成jar运行,但是如果在需要把项目达成war包该怎么办呢?下面是将springboot项目部署为war项目的一些步骤

1、首先 在pom.xml中将打包形式 jar 修改为war

  <packaging>war</packaging>
  • 1

2、将springboot内置的Tomcat依赖移除 ,需要注意的是,使用不同的模板引擎的时候,需要移除的依赖位置也不同,下面是原生的依赖和thymeleaf 模板引擎移除依赖的一些方法 (后面打包发现。 可以不需要在依赖中去除tomcat 依赖 直接添加)

 <dependency>
     <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
  </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

就可以了

原生Tomcat依赖移除
  • 1
  <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>
       <dependency>
     <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
  </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
thymeleaf 模板引擎依赖移除
  • 1
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

3、将Tomcat依赖移除后,为了保证编译正确,还需要添加对 servlet-api 的依赖(开始使用的时候是需要加servlet-api的依赖的,但是在后面使用中发现,可以不添加该依赖)

    <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-servlet-api</artifactId>
            <version>7.0.42</version>
            <scope>provided</scope>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4、设置,打包后的项目访问名称,在build节点里设置文件名 (这里是一个特别需要注意的地方,由于开始的时候是使用的单模块程序,所以可以对项目命名,但是在多模块打包中发现,如果添加项目名称 这个结点。打包好的程序在tomcat中运行的时候会发生错误,war 包的目录格式有问题)

</plugins>
        <finalName>项目名称</finalName>
    </build>
  • 1
  • 2
  • 3

5、由于我们需要使用外部Tomcat服务器部署war包,所以不能使用创建项目的application.java 这个main方法了,需要重写一个类似于 web.xml 文件配置的方式来启动 Spring 应用上下文,此时我们需要声明一个类,这个类的作用与在 web.xml 中配置负责初始化 Spring 应用上下文的监听器作用类似。

/**
 * Created by Sean on 2017/9/5.
 */
public class ServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(application名称.class);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这样就可以将项目打包成war 包,并放入外部Tomcat就可以使用了。 
不过需要重点注意的地方是 项目中所有请求路径都必须加上上面步骤4所写的项目名。不然会访问不到路径

猜你喜欢

转载自blog.csdn.net/qq_35568099/article/details/82697974