天天看点

IEDA打包springboot项目部署的注意事项IEDA打包springboot项目部署的注意事项

IEDA打包springboot项目部署的注意事项

1.springboot自带tomcat,打包后部署项目是放在linux系统内tomcat的webapps中,使用linux的tomcat服务器运行。因此在打包前需要排除springboot自带的tomcat.

<!--引入springboot的web支持依赖-->
    <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>
<!--如果springboot项目中引入了解析jsp的依赖,需要将scope设置为provided-->
<!--  引入springboot 与  jsp的集成jar-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
      <scope>provided</scope>
    </dependency>
           

2.需要制定打包方式为war.

3.打包后yml文件中配置的访问路径失效,访问路径变为war包的名字.

4.修改入口类

package com.baizhi;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

@SpringBootApplication
@MapperScan("com.baizhi.dao")
//修改入口类以便打包
public class Application extends SpringBootServletInitializer {
    public static void main(String[] args) {

        SpringApplication.run(Application.class,args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }
}

           

5.在pom文件中指定入口类

<build>
	<plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <!--使用热部署出现中文乱码解决方案-->
        <configuration>
          <fork>true</fork>
          <!--增加jvm参数-->
          <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
          <!--指定入口类-->
          <mainClass>com.baizhi.Application</mainClass>
        </configuration>
      </plugin>
    </plugins>
</build>	
           

常见的报错信息:

1.打包后浏览器中发送请求显示404,在确保请求路径正常后仍出现404,可能是打包出现问题。我在打包时发现使用插件中的war命令打包一直出现404,最后改为使用lifecicle中的package打包,解决了404错误。

2.浏览器控制台显示发送请求状态为pending,我的项目部署在虚拟机上,访问的是宿主机的mysql。出现这个问题,我查看了tomcat的日志,发现问题是宿主机中的mysql只允许localhost访问。将访问权限修改为允许所有ip访问后解决。