Springboot通过Jar与War的打包与部署

Posted Smile_Miracle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot通过Jar与War的打包与部署相关的知识,希望对你有一定的参考价值。

Springboot由于内置了tomcat容器,我们可以通过在pom文件中通过配置让其以jar的方式运行,形如:java -jar xxx.jar,我们也可以通过打war包的方式让它在你配置的tomcat容器中运行,下面来具体看看两种方式具体的打包部署方式。

 

打Jar包运行

1 编写好启动类

2 在pom的插件中指定启动类

3 mavan install 打成Jar文件防止在你需要的文件夹中,通过java -jar xxx.jar即可完成运行

具体演示如下:

启动类

package com.zhy.springboot;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;

import com.zhy.springboot.test.TestFilter2;
import com.zhy.springboot.test.TestFilter4;

/**
 * 经测试,过滤器第二种方式配置设置Order可完美控制顺序,而第一种加@order注解没起作用
 *
 */

@SpringBootApplication
//@EnableScheduling//开启定时任务支持
//@ComponentScan("com.zhy.springboot")
//这里是扫描dao接口的包用于识别mybatis
@MapperScan(basePackages="com.zhy.springboot.mapper")
//@ServletComponentScan(basePackages="com.zhy.springboot.filter")//springboot过滤器创建的第一种方式(注解)
//public class SpringbootApplication extends SpringBootServletInitializer
public class SpringbootApplication
	
	/*@Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) 
        return application.sources(SpringbootApplication.class);
    */
	
	public static void main(String[] args) 
		SpringApplication.run(SpringbootApplication.class, args);
	
	 
	/*//为了打包springboot war项目
	 @Override
	    protected SpringApplicationBuilder configure(
	            SpringApplicationBuilder builder) 
	        return builder.sources(this.getClass());
	    */
	
	@Bean//扫描多个properties
    public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() 
        PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();
        c.setIgnoreUnresolvablePlaceholders(true);
        return c;
    
	
	@Bean//springboot过滤器创建的第二种方式(代码配置)
	public FilterRegistrationBean<TestFilter2> indexFilterConfigurer()
		FilterRegistrationBean<TestFilter2> filter = new FilterRegistrationBean<TestFilter2>(new TestFilter2());
		filter.addUrlPatterns("/*");
		filter.setOrder(Integer.MAX_VALUE);//设置过滤器执行顺序,值越大越后执行
		return filter;
	
	
	@Bean//springboot过滤器创建的第二种方式(代码配置)
	public FilterRegistrationBean<TestFilter4> indexFilterConfigurer2()
		FilterRegistrationBean<TestFilter4> filter = new FilterRegistrationBean<TestFilter4>(new TestFilter4());
		filter.addUrlPatterns("/*");
		filter.setOrder(Integer.MAX_VALUE-1);
		return filter;
	
	

 

pom插件配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>zhy_springboot</groupId>
  <artifactId>zhy_springboot</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>
  <!-- 定义公共资源版本 -->
	<parent>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-parent</artifactId>
	    <version>2.0.2.RELEASE</version>
	    <relativePath /> 
	</parent>

	<properties>
	    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	    <java.version>1.8</java.version>
	</properties>
	
	<dependencies>
	    <!-- 上边引入 parent,因此 下边无需指定版本 -->
	    <!-- 包含 mvc,aop 等jar资源 -->
	    <dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-web</artifactId>
	    </dependency>
	    
	    <dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-quartz</artifactId>
		</dependency>
	    
	    <dependency>
		    <groupId>org.springframework.boot</groupId>    
		    <artifactId>spring-boot-starter-test</artifactId>
		    <scope>test</scope>
		</dependency>
		
		<dependency>
            <groupId>com.github.lftao</groupId>
            <artifactId>jkami</artifactId>
            <version>1.0.8</version>
        </dependency>
        
		<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.6</version>
        </dependency>
        
        <!-- mybatis-plus  -->
        <dependency>
	        <groupId>org.projectlombok</groupId>
	        <artifactId>lombok</artifactId>
	        <optional>true</optional>
	    </dependency>
	    <dependency>
	        <groupId>com.baomidou</groupId>
	        <artifactId>mybatis-plus</artifactId>
	        <version>3.0.7</version>
	    </dependency>
        
        <!-- ActiveMQ -->
        <dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-activemq</artifactId>
		</dependency>
		<dependency>
		     <groupId>org.apache.activemq</groupId>
		     <artifactId>activemq-pool</artifactId>
		</dependency>
		
		<!-- 爬虫 -->
		<dependency>
		    <groupId>com.codeborne</groupId>
		    <artifactId>phantomjsdriver</artifactId>
		    <version>1.2.1</version>
		</dependency>
		
		<!-- 热部署模块 -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-devtools</artifactId>
		    <optional>true</optional>
		</dependency>
		
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
		</dependency>
		
		<!-- 	Elastic Search -->
		<dependency>
		    <groupId>org.elasticsearch.client</groupId>
		    <artifactId>transport</artifactId>
		    </dependency>
		
		<dependency>  
		    <groupId>org.elasticsearch.plugin</groupId>  
		    <artifactId>delete-by-query</artifactId>  
		    <version>2.3.2</version>  
		</dependency>  
		
		<dependency>
			<groupId>org.elasticsearch</groupId>
			<artifactId>elasticsearch</artifactId>
		</dependency>
		
		<!--添加对tomcat的支持-->  
        <dependency>  
           <groupId>org.springframework.boot</groupId>  
           <artifactId>spring-boot-starter-tomcat</artifactId>  
            <scope>provided</scope>  
        </dependency> 
		
        <!--对jstl支持的 libs-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        
        <!-- https://mvnrepository.com/artifact/taglibs/standard -->
		<dependency>
		    <groupId>taglibs</groupId>
		    <artifactId>standard</artifactId>
		    <version>1.1.2</version>
		</dependency>
		        
        
        <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->  
        <dependency>  
            <groupId>commons-codec</groupId>  
            <artifactId>commons-codec</artifactId>  
        </dependency>  
        
       <!--  <dependency>  
            <groupId>org.springframework.security</groupId>  
            <artifactId>spring-security-taglibs</artifactId>  
        </dependency>  -->
		
	    <!-- 支持 @ConfigurationProperties 注解 -->  
	    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-configuration-processor -->  
	   <dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-configuration-processor</artifactId>
		    <optional>true</optional>
		</dependency>
        
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <!--  Mybatis -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis</artifactId>
		    <version>3.4.6</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
		<dependency>
		    <groupId>org.mybatis.spring.boot</groupId>
		    <artifactId>mybatis-spring-boot-starter</artifactId>
		    <version>1.3.2</version>
		</dependency>
		
		 <!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter -->
		<dependency>
		    <groupId>tk.mybatis</groupId>
		    <artifactId>mapper-spring-boot-starter</artifactId>
		    <version>2.0.2</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/tk.mybatis/mapper -->
		<dependency>
		    <groupId>tk.mybatis</groupId>
		    <artifactId>mapper</artifactId>
		    <version>4.0.2</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>		
		
		 <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-joda</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-parameter-names</artifactId>
        </dependency>
        <!-- 分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
        </dependency>
        <!-- 日志相关 -->
        <dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
        <!-- alibaba的druid数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.9</version>
        </dependency>
        
        <!-- 引入log4j2依赖 -->  
      <!--   <dependency> 
	        <groupId>org.springframework.boot</groupId>  
	        <artifactId>spring-boot-starter-log4j2</artifactId>  
	    </dependency>  
	    <dependency>  加上这个才能辨认到log4j2.yml文件  
	        <groupId>com.fasterxml.jackson.dataformat</groupId>  
	        <artifactId>jackson-dataformat-yaml</artifactId>  
	    </dependency>  -->
	    
	    <dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<!-- <exclusions>
				<exclusion>
					 <groupId>org.slf4j</groupId>
                     <artifactId>slf4j-log4j12</artifactId>
				</exclusion>
			</exclusions> -->
			<!-- <scope>provided</scope> -->
         </dependency>
		
		<!-- https://mvnrepository.com/artifact/javax.persistence/persistence-api -->
		<dependency>
		    <groupId>javax.persistence</groupId>
		    <artifactId>persistence-api</artifactId>
		    <version>1.0.2</version>
		</dependency>
		
		<!--配置servlet-->  
        <dependency>  
            <groupId>javax.servlet</groupId>  
            <artifactId>javax.servlet-api</artifactId>  
        </dependency>
        
        <!-- WebMagic -->
		<dependency>
		    <groupId>us.codecraft</groupId>
		    <artifactId>webmagic-core</artifactId>
		    <version>0.7.3</version>
		    <exclusions>
				<exclusion>
					 <groupId>org.slf4j</groupId>
                     <artifactId>slf4j-log4j12</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
		    <groupId>us.codecraft</groupId>
		    <artifactId>webmagic-extension</artifactId>
		    <version>0.7.3</version>
		</dependency>
		
		
	</dependencies>
	
	<!-- <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>src/main/webapp</directory>
                            <targetPath>WEB-INF/lib/</targetPath>
                            <includes>
                                <include>**/*.jar</include>
                            </includes>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
        </plugins>
    </build> -->
	
 <build>
	    <plugins>
	         <plugin>
	            <groupId>org.springframework.boot</groupId>
	            <artifactId>spring-boot-maven-plugin</artifactId>
	            <dependencies>
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>springloaded</artifactId>
                        <version>1.2.8.RELEASE</version>
                    </dependency>
                </dependencies>
	            <configuration>
	            <configuration>
					<layout>ZIP</layout>
					<includes>
						<include>
							<groupId>cn.jstars</groupId>
							<artifactId>datatocloud</artifactId>
						</include>
					</includes>
				</configuration>
	                <!-- 没有该配置,devtools 不生效  -->
	                <fork>true</fork>
	            </configuration>
        </plugin>
         <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
			</plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
	                     <mainClass>com.zhy.springboot.SpringbootApplication</mainClass>
                </configuration>
                <executions>
		          <execution>
		            <goals>
		              <goal>repackage</goal>
		            </goals>
		          </execution>
		        </executions>
            </plugin>
            <plugin>
                <artifactId>maven-source-plugin</artifactId>
                <configuration>
                    <attach>true</attach>
                    <encoding>UTF-8</encoding>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
	    </plugins>
	    <resources>
			<resource>
				 <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.tld</include>
                    <include>**/*.txt</include>
                    <include>**/*.yml</include>
                    <include>**/*.log</include>
                </includes>
			</resource>
		</resources>
	</build>
</project>

基本上按照这个来配置,然后打包 java-jar运行即可

 

 

 

打War包运行

我们都知道tomcat容器中运行中的web应用首先得满足一个条件那就是web.xml文件,而springboot由于高度集成根本没有这个玩意,那么我们怎么搞?它提供了一种基于编码式的方式达到这个目的,下面来看看它与基于JAR包的方式有多少区别。

 

1 继承SpringBootServletInitializer,重写configure方法目的是为了达到和web.xml一样的效果

2 更改pom插件的打包方式,屏蔽tomcat相关插件与Jar包一面冲突

3 maven install 打出war包放在tomcat中运行即可

具体演示:

启动类改造

package com.zhy.springboot;

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.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;

import com.zhy.springboot.test.TestFilter2;
import com.zhy.springboot.test.TestFilter4;

/**
 * 经测试,过滤器第二种方式配置设置Order可完美控制顺序,而第一种加@order注解没起作用
 *
 */

@SpringBootApplication
//@EnableScheduling//开启定时任务支持
//@ComponentScan("com.zhy.springboot")
//这里是扫描dao接口的包用于识别mybatis
@MapperScan(basePackages="com.zhy.springboot.mapper")
//@ServletComponentScan(basePackages="com.zhy.springboot.filter")//springboot过滤器创建的第一种方式(注解)
public class SpringbootApplication extends SpringBootServletInitializer
//public class SpringbootApplication
	
	@Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) 
        return application.sources(SpringbootApplication.class);
    
	
	public static void main(String[] args) 
		SpringApplication.run(SpringbootApplication.class, args);
	
	 
	/*//为了打包springboot war项目
	 @Override
	    protected SpringApplicationBuilder configure(
	            SpringApplicationBuilder builder) 
	        return builder.sources(this.getClass());
	    */
	
	@Bean//扫描多个properties
    public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() 
        PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();
        c.setIgnoreUnresolvablePlaceholders(true);
        return c;
    
	
	@Bean//springboot过滤器创建的第二种方式(代码配置)
	public FilterRegistrationBean<TestFilter2> indexFilterConfigurer()
		FilterRegistrationBean<TestFilter2> filter = new FilterRegistrationBean<TestFilter2>(new TestFilter2());
		filter.addUrlPatterns("/*");
		filter.setOrder(Integer.MAX_VALUE);//设置过滤器执行顺序,值越大越后执行
		return filter;
	
	
	@Bean//springboot过滤器创建的第二种方式(代码配置)
	public FilterRegistrationBean<TestFilter4> indexFilterConfigurer2()
		FilterRegistrationBean<TestFilter4> filter = new FilterRegistrationBean<TestFilter4>(new TestFilter4());
		filter.addUrlPatterns("/*");
		filter.setOrder(Integer.MAX_VALUE-1);
		return filter;
	
	

可以看到启动类继承了SpringBootServletInitializer并且重写了configure方法;

 

pom改造

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>zhy_springboot</groupId>
  <artifactId>zhy_springboot</artifactId>
  <version>1.0.0</version>
  <packaging>war</packaging>
  <!-- 定义公共资源版本 -->
	<parent>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-parent</artifactId>
	    <version>2.0.2.RELEASE</version>
	    <relativePath /> 
	</parent>

	<properties>
	    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	    <java.version>1.8</java.version>
	</properties>
	
	<dependencies>
	    <!-- 上边引入 parent,因此 下边无需指定版本 -->
	    <!-- 包含 mvc,aop 等jar资源 -->
	    <dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-web</artifactId>
	    </dependency>
	    
	    <dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-quartz</artifactId>
		</dependency>
	    
	    <dependency>
		    <groupId>org.springframework.boot</groupId>    
		    <artifactId>spring-boot-starter-test</artifactId>
		    <scope>test</scope>
		</dependency>
		
		<dependency>
            <groupId>com.github.lftao</groupId>
            <artifactId>jkami</artifactId>
            <version>1.0.8</version>
        </dependency>
        
		<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.6</version>
        </dependency>
        
        <!-- mybatis-plus  -->
        <dependency>
	        <groupId>org.projectlombok</groupId>
	        <artifactId>lombok</artifactId>
	        <optional>true</optional>
	    </dependency>
	    <dependency>
	        <groupId>com.baomidou</groupId>
	        <artifactId>mybatis-plus</artifactId>
	        <version>3.0.7</version>
	    </dependency>
        
        <!-- ActiveMQ -->
        <dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-activemq</artifactId>
		</dependency>
		<dependency>
		     <groupId>org.apache.activemq</groupId>
		     <artifactId>activemq-pool</artifactId>
		</dependency>
		
		<!-- 爬虫 -->
		<dependency>
		    <groupId>com.codeborne</groupId>
		    <artifactId>phantomjsdriver</artifactId>
		    <version>1.2.1</version>
		</dependency>
		
		<!-- 热部署模块 -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-devtools</artifactId>
		    <optional>true</optional>
		</dependency>
		
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
		</dependency>
		
		<!-- 	Elastic Search -->
		<dependency>
		    <groupId>org.elasticsearch.client</groupId>
		    <artifactId>transport</artifactId>
		    </dependency>
		
		<dependency>  
		    <groupId>org.elasticsearch.plugin</groupId>  
		    <artifactId>delete-by-query</artifactId>  
		    <version>2.3.2</version>  
		</dependency>  
		
		<dependency>
			<groupId>org.elasticsearch</groupId>
			<artifactId>elasticsearch</artifactId>
		</dependency>
		
		<!--添加对tomcat的支持-->  
        <dependency>  
           <groupId>org.springframework.boot</groupId>  
           <artifactId>spring-boot-starter-tomcat</artifactId>  
            <scope>provided</scope>  
        </dependency> 
		
        <!--对jstl支持的 libs-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        
        <!-- https://mvnrepository.com/artifact/taglibs/standard -->
		<dependency>
		    <groupId>taglibs</groupId>
		    <artifactId>standard</artifactId>
		    <version>1.1.2</version>
		</dependency>
		        
        
        <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->  
        <dependency>  
            <groupId>commons-codec</groupId>  
            <artifactId>commons-codec</artifactId>  
        </dependency>  
        
       <!--  <dependency>  
            <groupId>org.springframework.security</groupId>  
            <artifactId>spring-security-taglibs</artifactId>  
        </dependency>  -->
		
	    <!-- 支持 @ConfigurationProperties 注解 -->  
	    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-configuration-processor -->  
	   <dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-configuration-processor</artifactId>
		    <optional>true</optional>
		</dependency>
        
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <!--  Mybatis -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis</artifactId>
		    <version>3.4.6</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
		<dependency>
		    <groupId>org.mybatis.spring.boot</groupId>
		    <artifactId>mybatis-spring-boot-starter</artifactId>
		    <version>1.3.2</version>
		</dependency>
		
		 <!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter -->
		<dependency>
		    <groupId>tk.mybatis</groupId>
		    <artifactId>mapper-spring-boot-starter</artifactId>
		    <version>2.0.2</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/tk.mybatis/mapper -->
		<dependency>
		    <groupId>tk.mybatis</groupId>
		    <artifactId>mapper</artifactId>
		    <version>4.0.2</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>		
		
		 <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-joda</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-parameter-names</artifactId>
        </dependency>
        <!-- 分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
        </dependency>
        <!-- 日志相关 -->
        <dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
        <!-- alibaba的druid数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.9</version>
        </dependency>
        
        <!-- 引入log4j2依赖 -->  
      <!--   <dependency> 
	        <groupId>org.springframework.boot</groupId>  
	        <artifactId>spring-boot-starter-log4j2</artifactId>  
	    </dependency>  
	    <dependency>  加上这个才能辨认到log4j2.yml文件  
	        <groupId>com.fasterxml.jackson.dataformat</groupId>  
	        <artifactId>jackson-dataformat-yaml</artifactId>  
	    </dependency>  -->
	    
	    <dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<!-- <exclusions>
				<exclusion>
					 <groupId>org.slf4j</groupId>
                     <artifactId>slf4j-log4j12</artifactId>
				</exclusion>
			</exclusions> -->
			<!-- <scope>provided</scope> -->
         </dependency>
		
		<!-- https://mvnrepository.com/artifact/javax.persistence/persistence-api -->
		<dependency>
		    <groupId>javax.persistence</groupId>
		    <artifactId>persistence-api</artifactId>
		    <version>1.0.2</version>
		</dependency>
		
		<!--配置servlet-->  
        <dependency>  
            <groupId>javax.servlet</groupId>  
            <artifactId>javax.servlet-api</artifactId>  
        </dependency>
        
        <!-- WebMagic -->
		<dependency>
		    <groupId>us.codecraft</groupId>
		    <artifactId>webmagic-core</artifactId>
		    <version>0.7.3</version>
		    <exclusions>
				<exclusion>
					 <groupId>org.slf4j</groupId>
                     <artifactId>slf4j-log4j12</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
		    <groupId>us.codecraft</groupId>
		    <artifactId>webmagic-extension</artifactId>
		    <version>0.7.3</version>
		</dependency>
		
		
	</dependencies>
	
	<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>src/main/webapp</directory>
                            <targetPath>WEB-INF/lib/</targetPath>
                            <includes>
                                <include>**/*.jar</include>
                            </includes>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
        </plugins>
    </build>
	
 
</project>

这里就不要那么多规矩,简单几步改造即可完成,然后maven install 打出war包放在tomcat下运行即可。

 

 

 

 

 

为了简便,建议在打jar或者war时在<build>标签下添加<finalName>xxx</finalName>以免项目名太长。

以上是关于Springboot通过Jar与War的打包与部署的主要内容,如果未能解决你的问题,请参考以下文章

《Spring Boot编程实战与面试指南》05-04:Spring Boot应用的打包和部署

SpringBoot项目如何进行打包部署

SpringBoot项目如何进行打包部署

springboot的项目部署:jar包和war包

SpringBoot项目如何进行打包部署

SpringBoot项目如何进行打包部署