前言
需要在pom.xml文件中添加插件
图片补充:
一、maven命令打包
1、命令窗口cd到根目录(和pom.xml
、target
同级),也可在idea工具中选择Terminal
2、执行打包命令 mvn clean package
(跳过测试类命令 mvn clean package -Dmaven.test.skip=true
)
二、idea插件打包
1、在IDEA
右侧Maven Projects
栏双击package
等待Build Success
即可
三、启动项目
打包完成后jar包会生成在项目目录下,具体位置控制台信息会给出:
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 这种方式启动有个弊端:一旦窗口关闭,项目也就强制关闭,体验效果很不好。
为了改善这种方式,可以使用后台启动的方式运行jar包。
①Windows下后台启动:
命令:javaw -jar xxx.jar >bootLog.log
注意,是 javaw ,不是 Java ;bootLog.log为自定义输出的日志文件名。
此时,控制台不会显示任何信息,而在当前目录下会生成一个log文件,日志信息会在log文件中生成。关闭控制台,项目依然运行。
打开任务管理器,找到Java应用程序,右键点击“结束任务”即可关闭运行。
②Linux下后台启动:
命令:nohup java -jar xxx.jar & 或 nohup java -jar xxx.jar >bootLog.log &
第一个命令方式没有自定义log文件名,会在当前目录下自动生成一个名为 “nohup.out” 的文件:
第二个命令方式自定义log文件名,会在当前目录下自动生成当前定义的log文件:
查看日志文件,启动成功后,可以正常访问。
查看当前jar包名的进程,杀死该进程即可关闭运行。
四、打成WAR包(补充)
4.1、初期直接选择war包方式创建项目
创建项目时打包方式直接选择 “war”
按照上面的打包方式打成war包
将war包复制出来,粘贴到tomcat下的webapps目录下,启动tomcat,可以正常访问项目。
4.2、jar包改war包
①修改pom.xml文件,将项目打成war包
②修改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 中配置的端口和访问路径将失效;
2、程序默认访问路径为war包文件名