SpringBoot 项目部署(初级)(springbootweb项目部署)

  本篇文章为你整理了SpringBoot 项目部署(初级)(springbootweb项目部署)的详细内容,包含有spring boot 项目部署 springbootweb项目部署 springboot部署流程 springboot项目部署到tomcat SpringBoot 项目部署(初级),希望能帮助你了解 SpringBoot 项目部署(初级)。

   之前的项目一直在本地电脑上写,最近需要将项目部署到服务器上进行联调测速度。于是,在网上搜集资料后简单的进行一下总结。

  
之前的项目一直在本地电脑上写,最近需要将项目部署到服务器上进行联调测速度。于是,在网上搜集资料后简单的进行一下总结。

  由于本次打包部署是为了测试,于是很多内容做的还不算详尽,只是将项目简单的打包为jar包。

  1. SpringBoot 父子项目架构

  可以看出,目前的父子项目架构主要划分为:

  EEGSystem:父项目

  eeg-analyze-web:子模块

  sleep-stage-module:子模块,暂时作为启动类模块使用;

  由于,目前项目的代码均在sleep-stage-modul模块中,另一个模块中还没有写代码。所以在后续打包过程中,将sleep-stage-module模块的启动类作为该项目的唯一入口(后面会解释什么是项目唯一入口)。

  注意事项:父工程创建为Maven,启动类所在模块创建时一定要用SpringBoot项目,其他子模块创建时Maven、SpringBoot都可以

  2. xml文件配置

  2.1 父工程

  父工程的pom.xml文件配置:

  点击查看代码

  

 ?xml version="1.0" encoding="UTF-8"? 

 

   project xmlns="http://maven.apache.org/POM/4.0.0"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"

   modelVersion 4.0.0 /modelVersion

   groupId com.xxx.eegLab /groupId

   artifactId EEGSystem /artifactId

   version 1.0-SNAPSHOT /version

   packaging的默认打包类型是jar

   所有的父工程打包方式都需要设置成pom

   packaging pom /packaging

   !--该工程下的子模块名--

   modules

   module sleep-stage-module /module

   module eeg-ayalyze-web /module

   /modules

   依赖配置:目前这里的配置的依赖所引入的jar包在此工程下的所有子工程都会被引入

   dependencies

   /dependencies

   依赖管理:

   这里的配置的依赖只是对依赖版本的管理配置,子工程并不会直接引入

   如果子工程要需要引入只需要加入如下标签:

   dependency

   groupId mysql /groupId

   artifactId mysql-connector-java /artifactId

   /dependency

   这样就可以引入mysql的驱动了,这样的好处就是可以在父工程统一一下整个工程的jar包依赖版本

   而且如果有的工程不需要一些jar就可以不进行引入

   dependencyManagement

   /dependencyManagement

   /project

  

 

  主要有以下注意点:

  父工程的打包方式必须为:pom;

  必须在父工程中显式声明子工程模块;

  父工程不可以引入:spring-boot-maven-plugin插件,否者这个插件就将传递到每一个子模块中,打包会出错;

  2.2 子工程

  2.2.1 启动类子工程

  启动类子工程的pom.xml 文件配置:

  点击查看代码

  

 ?xml version="1.0" encoding="UTF-8"? 

 

   project xmlns="http://maven.apache.org/POM/4.0.0"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"

   parent

   artifactId EEGSystem /artifactId

   groupId com.xxx.eegLab /groupId

   version 1.0-SNAPSHOT /version

   /parent

   modelVersion 4.0.0 /modelVersion

   artifactId sleep-stage-module /artifactId

   packaging jar /packaging

   dependencies

   /dependencies

   build

   finalName main /finalName

   plugins

   plugin

   groupId org.springframework.boot /groupId

   artifactId spring-boot-maven-plugin /artifactId

   version 2.4.1 /version

   configuration

   !-- 指定该Main Class为全局的唯一入口 --

   mainClass com.xxx.eeglab.EegSystemApplication /mainClass

   /configuration

   executions

   execution

   goals

   !--可以把依赖的包都打包到生成的Jar包中--

   goal repackage /goal

   /goals

   /execution

   /executions

   /plugin

   /plugins

   /build

   /project

  

 

  主要有以下注意点:

  在子工程中显式声明所属父工程;

  必须在唯一启动类子工程中引入spring-boot-maven-plugin打包插件,并且要配置将所依赖的jar包全都打到这一包中;

  其他子工程中不要引入spring-boot-maven-plugin ,否则将会每个工程都单独打成一个包,无法拉取到启动类所在包中;

  2.2.2 其他子工程

  其他子工程的配置文件如下所示:

  点击查看代码

  

 ?xml version="1.0" encoding="UTF-8"? 

 

   project xmlns="http://maven.apache.org/POM/4.0.0"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"

   parent

   artifactId EEGSystem /artifactId

   groupId com.xxx.eegLab /groupId

   version 1.0-SNAPSHOT /version

   /parent

   modelVersion 4.0.0 /modelVersion

   artifactId eeg-ayalyze-web /artifactId

   dependencies

   /dependencies

   /project

  

 

  3. 打包

  通过Maven,在父工程下依次选择:clean,package即可。

  注意:虽然要将所有的jar都搭到main这个jar中,但是我们执行clean和package却是要对父工程进行;

  此时,我们需要将sleep-stage-module下的main.jar移动到服务器上,然后运行:java -jar main.jar即可。

  当然,这样操作是在命令行运行。一旦命令行关闭,那就停止运行了。我们可以通过nohup指令将程序提交到后台运行。

  4. 可能出现的问题

  如果按照上面的步骤来说,应该不会出现这个问题。但是,我第一次并没有按照上述步骤进行,而是按照另一个教程搞得。结果出现了下面的问题,简单记录一下:

  4.1 没有主清单程序

  在打包部署后,使用java -jar指令进行运行时,可能会出现:没有主清单程序 错误。

  我们用压缩软件打开打包好的jar包,然后看到META-INF里面的MANIFEST.MF文件:

  里面的内容应该是这样的:

  

Manifest-Version: 1.0

 

  Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx

  Archiver-Version: Plexus Archiver

  Built-By: 29687

  Spring-Boot-Layers-Index: BOOT-INF/layers.idx

  Start-Class: com.xxx.eeglab.EegSystemApplication

  Spring-Boot-Classes: BOOT-INF/classes/

  Spring-Boot-Lib: BOOT-INF/lib/

  Spring-Boot-Version: 2.4.1

  Created-By: Apache Maven 3.6.3

  Build-Jdk: 1.8.0_202

  Main-Class: org.springframework.boot.loader.JarLauncher

  

 

  Main-Class :代表了Spring Boot中启动jar包的程序;

  Start-Class :代表了Spring Boot程序的入口类,这个类中应该有一个main方法;

  Spring-Boot-Classes :代表了类的路径,所有编译后的class文件,以及配置文件,都存储在该路径下;

  Spring-Boot-Lib :表示依赖的jar包存储的位置;

  这些值都是SpringBoot打包插件会默认生成的,如果没有这些属性,SpringBoot程序自然不能运行,就会报错:jar中没有主清单属性,也就是说没有按照SpringBoot的要求,生成这些必须的属性。

  解决方法:在启动类子程序中添加:spring-boot-maven-plugin 应该就不会出问题了。

  5. 参考

  springboot项目父子多模块打包

  Spring Boot:jar中没有主清单属性

  以上就是SpringBoot 项目部署(初级)(springbootweb项目部署)的详细内容,想要了解更多 SpringBoot 项目部署(初级)的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: