前言

需要在pom.xml文件中添加插件

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring

图片补充:

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_java_02

一、maven命令打包

1、命令窗口cd到根目录(和pom.xmltarget同级),也可在idea工具中选择Terminal

2、执行打包命令 mvn clean package (跳过测试类命令 mvn clean package -Dmaven.test.skip=true)

二、idea插件打包

1、在IDEA右侧Maven Projects栏双击package等待Build Success即可

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring_03

三、启动项目

打包完成后jar包会生成在项目目录下,具体位置控制台信息会给出:

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_后端_04

3.1、单一配置启动

所谓单一配置,就是只有一个环境,开发、测试和生产都用同一个配置文件,启动方式同jar包命令相同。

命令:java -jar xxx.jar

3.2、多环境配置启动

命令:java -jar xxx.jar --spring.profiles.active=xxx

例如,项目中有三个配置文件,分别对应开发、测试和生产环境

application-dev.properties:server.port=8081   (开发环境)

application-test.properties:server.port=8082   (测试环境)

application-prod.properties:server.port=8083 (生产环境)

我想使用开发环境,输入命令:java -jar xxx.jar --spring.profiles.active=dev,这时候端口就变成8081;

我想使用测试环境,输入命令:java -jar xxx.jar --spring.profiles.active=test,这时候端口就变成8082;

我想使用生产环境,输入命令:java -jar xxx.jar --spring.profiles.active=prod,这时候端口就变成8083。

3.3、后台启动(补充)

使用命令:java -jar xxx.jar 这种方式启动有个弊端:一旦窗口关闭,项目也就强制关闭,体验效果很不好。

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_jar_05

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring_06

为了改善这种方式,可以使用后台启动的方式运行jar包。

①Windows下后台启动:

命令:javaw -jar xxx.jar >bootLog.log

注意,是 javaw ,不是 Java ;bootLog.log为自定义输出的日志文件名。

此时,控制台不会显示任何信息,而在当前目录下会生成一个log文件,日志信息会在log文件中生成。关闭控制台,项目依然运行。

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring_07

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_后端_08

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_jar_09

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring_10

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring_11

打开任务管理器,找到Java应用程序,右键点击“结束任务”即可关闭运行。

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_后端_12

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_jar_13

②Linux下后台启动:

命令:nohup java -jar xxx.jar &    或    nohup java -jar xxx.jar >bootLog.log &

第一个命令方式没有自定义log文件名,会在当前目录下自动生成一个名为 “nohup.out” 的文件:

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring_14

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring boot_15

第二个命令方式自定义log文件名,会在当前目录下自动生成当前定义的log文件:

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_后端_16

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring_17

查看日志文件,启动成功后,可以正常访问。

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring_18

查看当前jar包名的进程,杀死该进程即可关闭运行。

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_后端_19

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_jar_20

四、打成WAR包(补充)

4.1、初期直接选择war包方式创建项目

创建项目时打包方式直接选择 “war” 

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring_21

按照上面的打包方式打成war包

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_jar_22

将war包复制出来,粘贴到tomcat下的webapps目录下,启动tomcat,可以正常访问项目。

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_jar_23

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_java_24

4.2、jar包改war包

①修改pom.xml文件,将项目打成war包

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring_25

②修改pom.xml文件,移除嵌入式tomcat插件

<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>

或者

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-tomcat</artifactId>
  <!-- 去除内置的tomcat -->
  <scope>provided</scope>
</dependency>

③修改pom.xml文件,添加 servlet-api 依赖

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
</dependency>

④自定义类继承 SpringBootServletInitializer 类,重写初始化方法

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(BootJarApplication.class);
	}

}

然后,按照4.1方法打包并放在tomcat下运行。

注意:

1、以war包方式打包,application.properties 或 application.yml 中配置的端口和访问路径将失效;

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_后端_26

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring boot_27

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_jar_28

2、程序默认访问路径为war包文件名

springboot 打成jar包部署后无法访问静态页面 springboot jar 部署_spring_29