Spring-Boot-Packing

Spring Boot 项目打包成war包

一、配置pom文件

1、移除spring boot内置的tomcat

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

添加Tomcat

<dependency>			
    <groupId>org.apache.tomcat.embed</groupId>			
    <artifactId>tomcat-embed-jasper</artifactId>			
    <scope>provided</scope>
</dependency>

2、添加servlet支持

<dependency>			
    <groupId>javax.servlet</groupId>			
    <artifactId>jstl</artifactId>
</dependency>

3、移除thymeleaf 模板引擎依赖

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

4、设置打包为war

<!-- 这里设置打包的形式  默认为jar -->
<packaging>war</packaging>

5、设置打包后的项目访问名称

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

<build>    
    <plugins>        

        <plugin>            
            <groupId>org.springframework.boot</groupId>            
            <artifactId>spring-boot-maven-plugin</artifactId>        
        </plugin>    
    </plugins>    
    <finalName>ROOT</finalName>
</build>

二、Application类的同级添加一个SpringBootStartApplication类(参考)

/*    * 为了打包springboot项目    * */    
@Override    
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {        
    return builder.sources(this.getClass());    
}

三、使用IDEA打包

注:
IDE打包方式多种多样,以上只是列出IDEA中的一种打包方式
默认打包路径为项目的target路径下

四、部署到Tomcat下面

1、将war包放到Tomcat的 webapps目录下

2、修改 tomcat 中 conf 目录下的配置文件 server.xml,在配置文件中找到Host标签,在其中添加如下内容。这里使用的是相对路径,doBase 属性的值是我们所打 war 包的名称

<Context docBase="chenk.war" path="/" reloadable="true" privileged="true"/>

path 是虚拟路径;
docBase 是应用程序的物理路径;
privileged 设置为true的时候,才允许Tomcat的Web应用使用容器内的Servlet;
reloadable 如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,可以在不重起tomcat的情况下,自动装载改变后的应用程序,实现热部署;
修改这一项是因为如果不添加这一句,用tomcat访问时需要加上项目名,这也是为什么doBase属性的值是项目名的原因。

Contents
  1. 1. Spring Boot 项目打包成war包
    1. 1.1. 一、配置pom文件
      1. 1.1.1. 1、移除spring boot内置的tomcat
      2. 1.1.2. 2、添加servlet支持
      3. 1.1.3. 3、移除thymeleaf 模板引擎依赖
      4. 1.1.4. 4、设置打包为war
      5. 1.1.5. 5、设置打包后的项目访问名称
    2. 1.2. 二、Application类的同级添加一个SpringBootStartApplication类(参考)
    3. 1.3. 三、使用IDEA打包
    4. 1.4. 四、部署到Tomcat下面
|