Nemo

Nemo 关注TA

路漫漫其修远兮,吾将上下而求索。

Nemo

Nemo

关注TA

路漫漫其修远兮,吾将上下而求索。

  •  普罗旺斯
  • 负责帅就完事了
  • 写了1,496,113字

该文章投稿至Nemo社区   Java  板块 复制链接


Springboot 打包发布到tomcat

发布于 2017/05/02 17:18 3,203浏览 0回复 2,525

第一步:将这个 Spring Boot 项目的打包方式设置为 war

    <version>0.0.1</version>
    <packaging>war</packaging>

第二步去掉springboot中内嵌的tomcat模块,修改pom文件

<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>

如果该项目非web项目,则需要在build标签添加插件:

<!-- maven打包的时候告诉maven不需要web.xml,否刚会报找不到web.xml错误 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>

第三步

写一个SpringBootServletInitializer 子类,并覆盖它的 configure 方法,可以把应用的主类改为继承 SpringBootServletInitializer,或另外写,我这里用继承的方法


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.web.servlet.ErrorPage;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpStatus;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;

import java.util.Locale;

@SpringBootApplication
public class RenProApplication extends SpringBootServletInitializer {


    @Override
    protected SpringApplicationBuilder configure(
            SpringApplicationBuilder application) {
        return application.sources(RenProApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(RenProApplication.class, args);
    }

    @Bean
    public LocaleResolver localeResolver() {
        CookieLocaleResolver slr = new CookieLocaleResolver();
        slr.setDefaultLocale(Locale.CHINA);
        slr.setCookieMaxAge(3600);//设置cookie有效期.
        return slr;
    }
}

第四步打包

mvn clean package -Dmaven.test.skip=true


第五步:把target下生成的war包放到tomcat下启动即可。

这里需要注意的是,访问路径这时候需要加上此时的项目名。在IDE下,启动的时候使用的是Springboot内嵌的tomcat,是不需要添加项目名即可访问的...这个低级的错误花费了我不少时间验证过了...


本文标签
 {{tag}}
点了个评