Springboot打包部署(七)

末蓝、 2022-02-02 10:59 438阅读 0赞

一、前言

  1. 作为后台开发,项目打包部署是经常性的操作。当我们完成某一阶段的开发之后就要进入测试阶段,这就需要我们打成jar或者war包部署在服务器,方便测试人员进行测试。spring boot打包有多种方式,比如打成jar、或者war,亦或者通过jekins进行打包部署。
  2. 本篇文章主要介绍怎么如何打成**jar**和**war**部署。

二、 jar形式

2.1 在pom.xml中添加插件

  1. <groupId>com.example</groupId>
  2. <artifactId>springboot-upload</artifactId>
  3. <version>0.0.1-SNAPSHOT</version>
  4. <packaging>jar</packaging>
  5. //注意把packaging标签改为jar,此标签也可不写,默认打包方式为jar。
  6. <build>
  7. <plugins>
  8. <plugin>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-maven-plugin</artifactId>
  11. <configuration>
  12. <fork>true</fork>
  13. </configuration>
  14. </plugin>
  15. </plugins>
  16. </build>

2.2 idea插件打包

  1. IDEA右侧Maven Projects栏双击package等待Build Success即可
  2. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1Zm9yZXZlcmxvdmU_size_16_color_FFFFFF_t_70][]

2.3 maven命令行打包

  1. **a.**黑窗口cd到根目录(和pom.xmltarget同级),也可在idea工具中选择Terminal
  2. **b.**执行打包命令 mvn clean package (跳过测试类命令 mvn clean package \-Dmaven.test.skip**=**true)
  3. ![20190511143616206.png][]
  4. **c.** 出现如下表示打包成功:
  5. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1Zm9yZXZlcmxvdmU_size_16_color_FFFFFF_t_70 1][]

2.4 启动项目

  1. ** a.**打包完成后jar包会生成到target目录下,命名一般是 项目名+版本号.jar。如下图
  2. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1Zm9yZXZlcmxvdmU_size_16_color_FFFFFF_t_70 2][]
  1. 启动项目:在windows下,cmdtarget目录下,也可在target目录下按shift+右键打开命令行,然后执行java -jar 项目名+版本号.jar
  1. **b.**现演示在**Linux**下操作:首先把jar包通过xshell等工具上传到指定的**Linux**文件夹下,我这上传位置为**home/project**
  2. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1Zm9yZXZlcmxvdmU_size_16_color_FFFFFF_t_70 3][]
  3. **c.**输入java -jar springboot-upload-0.0.1-SNAPSHOT.jar
  4. ![20190511143944905.png][]
  5. 这种方式启动有一个弊端,就是只要控制台关闭,服务就不能访问了。通过以下命令可以确保关闭后也可运行,即后台运行的方式启动:

nohup java -jar springboot-upload-0.0.1-SNAPSHOT.jar &

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

java -jar springboot-upload-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

2.5)出现的问题

20190511144021432.png

  1. **解决方案:**
  2. 1)配置中添加 spring.thymeleaf.prefix=classpath:/templates
  3. 2)指向模板的路径 不加 /

三、 war形式

打成war包放到tomcat服务器下。

3.1) pom.xml中把jar改成war

  1. <packaging>war</packaging>

3.2) 添加外置tomcat依赖

  1. <!--打包时排除tomcat-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-tomcat</artifactId>
  5. <scope>provided</scope>
  6. </dependency>
  1. 在这里将 **scope** 属性设置为 **provided**,这样在最终形成的 **WAR** 中不会包含这个**JAR**包,因为**Tomcat**或**Jetty**等服务器在运行时将会提供相关的API 类。

3.3) 在入口类中继承SpringBootServletInitializer并重写configure方法

  1. @SpringBootApplication
  2. public class SpringbootUploadApplication extends SpringBootServletInitializer {
  3. public static void main(String[] args) {
  4. SpringApplication.run(SpringbootUploadApplication.class, args);
  5. }
  6. @Override
  7. protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){
  8. return builder.sources(SpringbootUploadApplication.class);
  9. }
  10. }

3.4) 输入命令 mvn clean package打包,把target目录下生成的war放到tomcat的webapps目录下即可。

  1. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1Zm9yZXZlcmxvdmU_size_16_color_FFFFFF_t_70 4][]
  2. 然后cdtomcatbin目录下,执行./startup.sh
  3. ![20190512085410332.png][]
  4. tomcat运行时会自动将war解压
  5. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1Zm9yZXZlcmxvdmU_size_16_color_FFFFFF_t_70 5][]
  6. 启动浏览器访问,这样打包war并部署就完成了。
  7. ![20190512085810255.png][]

3.5) 出现的问题

  1. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1Zm9yZXZlcmxvdmU_size_16_color_FFFFFF_t_70 6][]
  2. 网上说可能tomcat版本问题或者tomcat中某些文件修改了,我当时选的版本是tomcat7 ,然后改成tomcat8就能正常启动和访问了。

3.6) 总结

1、pom文件中jar改成war

2、添加外置的tomcat依赖

3、入口类继承SpringBootServletInitializer并重写configure方法

4、项目访问路径 ip:port/jar名称

5、tomcat版本问题


四、 最后

  1. 至此spring boot打包jarwar介绍完毕。

欢迎大家关注微信公众号!

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1Zm9yZXZlcmxvdmU_size_16_color_FFFFFF_t_70 7

发表评论

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

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

相关阅读

    相关 Springboot打包部署()

    一、前言 >        作为后台开发,项目打包部署是经常性的操作。当我们完成某一阶段的开发之后就要进入测试阶段,这就需要我们打成jar或者war包部署在服务器,方便测