前言
springboot的打包方式有很多种。有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的。这里主要介绍如何打成jar进行部署。
前后端分离现如今为主流架构,springboot构建web应用,可以快速的打成jar包然后启动服务。
此外,springboot还可以打成war包,在外部tomcat上部署服务,此时,项目内若存在applcation.properties配置的server.port将不起作用。不推荐用war,因为springboot适合前后端分离,打成jar进行部署更合适。
一、jar包部署
1.idea打开创建好的springboot工程,在maven中使用package打包(springboot工程默认打成jar)  2.在target中找到打包好的jar包目录,打开cmd,使用命令行: java -jar 跟上jar包名称 
3.注意pom中设置的项目的jdk版本和本地环境的jdk版本需要一致
<properties>
<java.version>1.8</java.version>
</properties>
4.启动成功即可测试(测试访问性,这里代码随意)  
二、war包部署
一般情况下,将springboot工程打包为war分为以下几个步骤: 1.修改pom.xml,将打包方式设置为war 修改jar为war
<packaging>war</packaging>
2.移除springboot默认的tomcat配置,移除默认的spring-boot-starter-tomcat,使用provided
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
3.添加tomcat-servelt-api依赖
*注意根据自己的情况修改version
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>8.0.36</version>
<scope>provided</scope>
</dependency>
4.改造启动类,核心启动类 继承SpringBootServletInitializer,并重写configure方法
@SpringBootApplication
public class SpringbootMapperscanApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SpringbootMapperscanApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringbootMapperscanApplication.class);
}
}
5.添加打包插件 在pom.xml的build > plugins 中添加打包插件,可以指定打包的名称等配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warSourceExcludes>src/main/resources/**</warSourceExcludes>
<warName>cjzdtlj</warName>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
6.在IDE的命令行使用mvn clean命令清除旧的包,并使用mvn package生成新的war包 
jar包和war包方式对比
- 打jar包时不会把src/main/webapp下的内容打到jar包里,而打war包会
- 提供rest服务的项目需打成jar包,而又大量css、js、html而且需要经常改动的项目,打成jar包运行比较方便,因为改动静态资源可以直接覆盖,很快看到改动后的效果
- 个人觉得打包成jar包比war要方便的多
|