1、打成jar包
1.在pom.xml中引入springboot的插件:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2.maven中package
3.在项目的target中生成jar包
4.在Terminal中进入target目录,输入java -jar Springboot-1.0-SNAPSHOT.jar启动:
(注意:jar部署的时候上传下载会出现路径问题,这个留到以后写)
2、基于idea的热部署
为了进一步提高开发效率,springboot为我们提供了全局项目热部署,日后在开发过程中修改了部分代码以及相关配置文件后,不需要每次重启使修改生效,在项目中开启了springboot全局热部署之后只需要在修改之后等待几秒即可使修改生效。
1.项目中引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
2.设置idea中支持自动编译
Preferences | Build, Execution, Deployment | Compiler -> 勾选上 Build project automatically 这个选项
3.开启允许在运行过程中修改文件
ctrl + alt + shift + / 或者(苹果电脑:option+command+shift+/)---->选择1.Registry ---> 勾选 compiler.automake.allow.when.app.running 这个选项
4.启动项目检测热部署是否生效
启动出现如下日志代表生效
注意:日志出现restartedMain代表已经生效,在使用热部署时如果遇到修改之后不能生效,请重试重启项目在试
3、打war包
1、添加打包war包方式
<packaging>war</packaging>
2、指定入口类,用热部署出现中文乱码解决方案,增加jvm参数 。
<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.nono.Application</mainClass>
</configuration>
</plugin>
</plugins>
</build>
3、去掉内嵌tomcat,去掉使用内嵌tomcat解析jsp
<!--去掉内嵌tomcat-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope> <!--去掉内嵌tomcat-->
</dependency>
<!--去掉使用内嵌tomcat解析jsp-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope> <!--去掉使用内嵌tomcat解析jsp-->
</dependency>
4、在入口类中继承SpringBootServletInitializer,用于告诉springboot入口类是哪个。
package com.nono;
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.support.SpringBootServletInitializer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@MapperScan("com.nono.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、application.properties或者application.yml
下面这两个就失效了,因为这是war包启动排除了内嵌的tomcat。
server.port=8989
server.servlet.context-path=/nono
加入有效的项目名
spring.application.name=nono
6、maven先clean 再 package
7、war包就出现再target中
8、将war包放到本机外部的tomcat的webapps中运行:
进入tomcat 的bin目录启动:
./startup.sh