spring boot打包war包及运行教程
1、maven来管理项目,执行命令
cd 项目跟目录(和pom.xml同级)
mvn clean package
或者执行下面的命令
排除测试代码后进行打包
mvn clean package -Dmaven.test.skip=true
2、打包完成的jar包会生成到target目录下,命名规则如下
项目名+版本号.java
举例:qcdr-api-jt-1.0.0-SNAPSHOT.jar
3、用xshell执行jar包命令
java -jar qcdr-api-jt-1.0.0-SNAPSHOT.jar
这种方式,只要控制台关闭,服务就不能访问
下面是在后台运行的方式启动命令
nohup java -jar qcdr-api-jt-1.0.0-SNAPSHOT.jar &
4、打成war包
打成 war 包一般可以分两种方式来实现,
第一种可以通过 eclipse 这种开发工具来导出 war 包,
另外一种是使用命令来完成,这里主要介绍后一种
maven项目,修改pom包
将<packaging>jar</packaging>
改成<packaging>war</packaging>
然后排除tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
在这里将 scope 属性设置为 provided,
这样在最终形成的 WAR 中不会包含这个 JAR 包,
因为 Tomcat 或 Jetty 等服务器在运行时将会提供相关的 API 类
在这里将 scope 属性设置为 provided,
这样在最终形成的 WAR 中不会包含这个 JAR 包,
因为 Tomcat 或 Jetty 等服务器在运行时将会提供相关的 API 类
注册启动类
创建 ServletInitializer.java
,
继承 SpringBootServletInitializer ,
覆盖 configure(),把启动类 Application 注册进去。
外部 Web 应用服务器构建 Web Application Context
的时候,
会把启动类添加进去。
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
最后执行mvn clean package -Dmaven.test.skip=true
然后会自动生成:项目名+版本号.war文件,
拷贝到tomcat服务器就可以启动
5、如何重启
直接kill进程再次启动jar包
ps -ef|grep java
##拿到对于Java程序的pid
kill -9 pid
再次重启
Java -jar xxxx.jar
6、脚本执行
如果是maven,需要以下配置
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
如果使用是 gradle,需要包含下面配置
springBoot {
executable = true
}
7、启动方式:
1)可以直接./yourapp.jar 来启动
2)注册为服务
也可以做一个软链接指向你的jar包并加入到init.d中,然后用命令来启动。
init.d 例子:
`ln -s /var/yourapp/yourapp.jar /etc/init.d/yourapp`
`chmod +x /etc/init.d/yourapp`
这样就可以使用stop或者是restart命令去管理你的应用。
/etc/init.d/yourapp start|stop|restart
或者
service yourapp start|stop|restart
到此 Spring Boot 项目如何测试、联调和打包投产均已经介绍完,
以后可以找时间研究一下 Spring Boot 的自动化运维,
以及 Spring Boot 和 Docker 相结合的使用。