# Maven打包
## 使用spring-boot-maven-plugin插件
说明:Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。
Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。
Spring Boot Maven plugin的最新版本为2017.6.8发布的**1.5.4.RELEASE**,要求Java 8, Maven 3.2及以后。
---
从中可以看出我们一般的版本都是在1.5.4以上,现在的话,一般都是在2.0以上的SpringBoot的版本了。
换而言之,SpringBoot他自身就已经自带的maven打包功能,即可以将依赖包一起打进去,不影响程序的正常启动。
所以会被网上的一些方法所误导,所谓的使用assembly或者shade插件,这些统统不需要的。只需要引入以下依赖即可。
```xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.lucfzy.AppStater</mainClass>
</configuration>
</plugin>
</plugins>
</build>
```
要注意的是,这里有一个`mainClass`的配置项,这个其实在测试过程中可以不需要配置,也可以正常找到其主类。原因是我们可以点开继承自的依赖。

<center>图一</center>

在这里我们可以看到其实主类已经被声明过了,所以我们不需要自己再去声明主类,也可以正常运行程序。当然我们也可以自己去声明主类,也是没问题的,比如**图一**。
## 执行maven package指令

执行打包命令后,我们可以看到在左侧的**target**目录下面,会生成对应的jar包,那么对于我的这个项目生成的jar包有两个,分别如下图。

从这里可以看出,jar包一个是带original结尾的,一个是不带的。简而言之,一个是不带依赖的,一个是带依赖的,**所以我们需要选择不带original的jar包提供出去**,否则不带依赖的jar包是无法运行的。
## 执行jar包
为了方便测试我们可以把该**weather-backend-1.0-SNAPSHOT.jar**包拷贝到桌面上。
执行`jar -jar weather-backend-1.0-SNAPSHOT.jar`命令。

可以看到此时的jar包已经正常运行。接下来我们就可以通过浏览器或者postman的方式来访问和测试对应的接口就好啦。
Maven打包-将依赖包一起打进jar包中