八、SpringBoot工程打成war包

1、将pom.xml中默认的jar修改为war。

<packaging>war</packaging>

2、排除SpringBoot内置的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>

3、添加Tomcat依赖,用于编译和测试。

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
   <!-- 该包只在编译和测试的时候使用 -->
    <scope>provided</scope>
</dependency>

4、继承org.springframework.boot.web.servlet.support.SpringBootServletInitializer,实现configure方法。

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer{
      public static void main(String[] args) {
          SpringApplication.run(Application.class, args);
      }
      
      /**
       * 工程打成war需要继承SpringBootServletInitializer,重写configure方法
       * @date 2018年12月7日
       * @author zxp
       */
      @Override
      protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
          return builder.sources(Application.class);
      }
      
}

5、注意

使用外部Tomcat部署访问的时候,application.properties(或者application.yml)中配置的

server.port=

server.servlet.context-path=

将失效,请使用Tomcat的端口。

为了防止应用上下文所导致的项目访问资源加载不到的问题,建议pom.xml文件中<build></build>标签下添加<finalName></finalName>标签:

<build>
      <!-- 应与application.properties(或application.yml)中context-path保持一致 -->
    <finalName>war包名称</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
    <!-- 配置java版本-->
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>1.7</source>
            <target>1.7</target>
            <fork>true</fork>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

在项目目录下(与pom.xml文件同级),使用mvn命令打包,运行:

jar 方式打包,使用内置Tomcat:mvn clean install -Dmaven.test.skip=true

运行:java -jar 包名.jar

war方式打包,使用外置Tomcat:mvn clean package -Dmaven.test.skip=true

clean是清除之前的包,-Dmaven.test.skip=true是忽略测试代码

猜你喜欢

转载自www.cnblogs.com/beanbag/p/10116304.html
今日推荐