SpringBoot项目的打包部署

深藏阁楼爱情的钟 2022-06-02 02:06 412阅读 0赞

一、打成jar包

如果你使用的是maven来管理项目,执行以下命令既可以

cd 项目跟目录(和pom.xml同级)

  1. mvn clean package

或者执行下面的命令
排除测试代码后进行打包

  1. mvn clean package -Dmaven.test.skip=true

打包完成后jar包会生成到target目录下,命名一般是 项目名+版本号.jar

启动jar包命令

  1. java -jar target/spring-boot-scheduler-1.0.0.jar

这种方式,只要控制台关闭,服务就不能访问了。下面我们使用在后台运行的方式来启动:

  1. nohup java -jar target/spring-boot-scheduler-1.0.0.jar &

也可以在启动的时候选择读取不同的配置文件

  1. java -jar app.jar --spring.profiles.active=dev

也可以在启动的时候设置jvm参数

  1. java -Xms10m -Xmx80m -jar app.jar &

二、打成war包

打成war包一般可以分两种方式来实现,第一种可以通过eclipse这种开发工具来导出war包,另外一种是使用命令来完成,这里主要介绍后一种

1、maven项目,修改pom包

  1. <packaging>jar</packaging>

改为

  1. <packaging>war</packaging>

2、打包时排除tomcat.

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-tomcat</artifactId>
  4. <scope>provided</scope>
  5. </dependency>

在这里将scope属性设置为provided,这样在最终形成的WAR中不会包含这个JAR包,因为Tomcat或Jetty等服务器在运行时将会提供相关的API类。

3、添加severlet依赖

  1. <dependency>
  2. <groupId>javax.servlet</groupId>
  3. <artifactId>javax.servlet-api</artifactId>
  4. <version>3.1.0</version>
  5. <scope>provided</scope>
  6. </dependency>

4、注册启动类

创建ServletInitializer.java,继承SpringBootServletInitializer ,覆盖configure(),把启动类Application注册进去。外部web应用服务器构建Web Application Context的时候,会把启动类添加进去。

  1. public class ServletInitializer extends SpringBootServletInitializer {
  2. @Override
  3. protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
  4. return application.sources(Application.class);
  5. }
  6. }

5、最后执行

  1. mvn clean package -Dmaven.test.skip=true

会在target目录下生成:项目名+版本号.war文件,拷贝到tomcat服务器中启动即可。
ps:目前这种方式部署的所有的请求链接都缺少项目名称,在tomcate容器中应该是http:ip:端口/项目名称/请求contraller。但是这种方式缺少项目名称,如果在每个请求手动加上项目名称的话比较繁琐,目前尚未弄清楚怎么解决

发表评论

表情:
评论列表 (有 0 条评论,412人围观)

还没有评论,来说两句吧...

相关阅读