Jar打包方式运行
类型为jar时
<packaging>jar</packaging>
1.使用命令mvn clean package 打包
2.使用java –jar 包名运行
// -server -Xms256m -Xmx256m 设置jvm参数 初始化堆内存值和最大值
例:java -server -Xms256m -Xmx256m -jar springboot_project.jar
War打包方式 外部Tomcat运行
类型为war时
<packaging>war</packaging>
1.pom.xml修改
<!-- springboot-web组件 -->
<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 Scope改为provided -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
说明:scope作用范围
1、compile设置编译范围内有效,在编译和打包时都会将依赖项加载进去。
2、test设置测试范围内有效,只在测试时使用,编译和打包时都不会加载该项。
3、provided设置编译和测试的范围内有效,打包时不会加载该项。
4、runtime设置在运行时加载该依赖项,但是编译时不依赖。
2.修改启动类 继承SpringBootServletInitializer,并实现configure方法
@SpringBootApplication
public class ApplicationRun extends SpringBootServletInitializer { @Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(this.getClass());
} public static void main(String[] args) {
SpringApplication.run(ApplicationRun.class,args);
}
}
说明:外部tomcat启动的时候配置文件中配置的端口号和context-path将失效,使用的是外部tomcat的端口号和tomcat webapps下war包 名称
#修改端口号和contextPath
server.port = 8888
server.servlet.context-path=/test
打包跳过本地的错误(本地环境和生产环境冲突):package -Dmaven.test.skip=true