当前位置: 首页 > news >正文

SpringBoot 的版本、打包、Maven

一、SpringBoot 结构、集成 

1.1、集成组件 

Spring Core:Spring的核心组件,提供IOC、AOP等基础功能,是Spring全家桶的基础。

Spring Boot:一个基于Spring Framework的快速开发框架,可以快速创建独立的、生产级别的Spring应用程序。

Spring Cloud:一个用于构建分布式应用程序的框架,提供了诸如服务发现、配置管理、负载均衡等功能。

Spring Data:用于简化数据访问层开发的框架,提供了一系列数据访问模板和持久化技术的集成。

Spring Security:一个用于处理应用程序安全的框架,提供了认证、授权、安全防护等功能。

Spring Integration:Spring Integration是一个用于构建企业级集成解决方案的框架,支持将不同的应用程序和服务集成到一起。它提供了许多组件和模式,如消息通道、消息端点、消息路由器、过滤器等。

Spring Batch:Spring Batch是一个用于处理大量数据和批处理作业的框架。它提供了各种工具和组件,如任务启动器、作业仓库、作业执行器、步骤处理器、读写器等。

Spring Web Services:Spring Web Services是一个用于构建基于SOAP协议的Web服务的框架。它提供了各种组件和工具,如消息处理器、绑定器、端点等,使得构建Web服务更加容易。

二、SpringBoot 版本相关问题 

Spring Boot 2X 
Spring Boot 2.0在2018年2月28日发布,Spring Boot 2.7是2.x的最后一个发布版本最后一个支持 JDK 8 的版本,该版本的开源将于2023年11月停止支持,商业支持可延长到2025年2月。

Spring Boot 3X 
Spring Boot 3.0于2022年11月24日发布,它是Spring Boot的下一个大版本,基于Spring Framework 6.0,而且要求Java最低版本为Java17。
Spring Framework 6.0于2022年11月16日发布,是Spring Framework的下一个大版本,该版本要求Java最低版本为Java17。

三、jar 包 与 war包

SpringBoot 打包区别

3.1、jar包

jar包是java项目压缩包,通过java程序(JavaSE)压缩产生的压缩包。

3.1.1、jar包目录结构

根目录
   |
   |---- 该包的 java 类文件目录
   |
   |---- META-INF 目录          // 存放该包和扩展的配置数据

3.1.2、jar包的启动

#1、直接启动: java -jar demo.jar
这种启动方式适合自己测试,部署在Linux上,关闭会话窗口或者ctrl+c都会关闭Java#2、后台启动:java -jar demo.jar &
这种方式会在后台静默运行,关闭会话窗口会中断Java,和上一种一样,这两个日志都是打印在窗口的,关闭会话就没了#3、nohup启动:nohup java -jar demo.jar &
这种会把日志打印到nohup.out文件中,但只会打印标准输出不会打印错误输出,关闭通过pid号来kill掉#4、nohup启动:nohup java -jar demo.jar>/root/demo.log 2>&1 &
这种会把普通输出和错误输出都打印到demo.log中#5、需要打印控制台日志,需要保留之前的日志信息
nohup java -jar test.jar >>  ./info.log &

3.2、war包

web项目压缩包,可直接运行的web模块,部署到Web容器(如 tomcat)中。
war包 包含项目所东西:
    代码编译成的 class 文件 
    依赖包 
    配置文件 
    网站页面(html、jsp、servlet、图片文件等)

3.2.1、war包目录结构

war包放在tomcat的\webapps\ 目录下,启动 Tomcat,war包就会自动解压运行。

3.2.2、war包的启动

根目录
   |
   |---- .html、.jsp (或包含这两种文件的目录)
   |
   |---- WEB-INF 目录           // 存放 .class 文件和配置文件
   |        |
   |        |---- web.xml       // 该应用的配置文件
   |        |
   |        |---- classes 目录
   |        |         |
   |        |         |---- 编译好的 servlet 类和 js
   |        |         |
   |        |         |---- servlet 所依赖的其他类(如 JavaBean)
   |        |----- lib          // 存放该包的依赖 jar 包
   |
   |---- META-INF 目录          // 存放该包和扩展的配置数据

三、Maven

Maven 基于 Java 的项目管理工具。

3.1、Maven目录及文件

helloMaven:项目名,包含 src 文件夹和 pom.xml。
src/main/java:用于存放项目的 Java 文件。
src/main/resources:用于存放项目资源文件。
src/test/java:用于存放所有测试 Java 文件,如 JUnit 测试类。
src/test/resources :用于存放测试资源文件。
target:项目输出位置,用于存放编译后的文件。
pom.xml:Maven 项目核心配置文件。

3.2、Maven 坐标

唯一的字符串,表示资源。

<groupId>***</groupId>
<artifactId>***</artifactId>
<version>***</version>
<packaging>***</packaging>

groupId: 项目组 ID,定义当前 Maven 项目隶属的组织或公司,通常是唯一的。一般是项目所属公司或组织的网址或 URL 的反写,例如 net.biancheng.www。
artifactId: 项目 ID,通常是项目的名称。
version:版本。
packaging:项目的打包方式,默认值为 jar。
classifier:帮助定义构建输出的一些附属构件,不直接定义项目的classifier,由附加插件帮助生成。 

3.3、Maven 依赖 

<dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope>
</dependency>

groupId、artifactId 和 version:依赖的基本坐标,任何一个依赖基本坐标是最重要的,Maven 根据坐标找到需要的依赖。
type:依赖的类型,对应于项目坐标定义的 packaging。大部分情况下,该元素不必声明,其默认值是 jar。
scope:依赖的范围。
optional:标记依赖是否可选。
exclusions:用来排除传递性依赖。

Maven的依赖范围 

compile:编译依赖范围,默认的。编译、测试、运行的时候都要用到这个依赖。
test:测试依赖范围。只有在编译测试代码 + 运行测试代码的时候才需要;
provided:已提供依赖范围。编译和测试时使用,运行时无效;
runtime:运行时依赖范围。测试和运行时有效,编译主代码时无效;
system:系统依赖范围。与provided一致,与本机是强绑定,会导致不可移植,慎用,systemPath中可以引用环境变量。
import:导入依赖范围。

3.4、Maven的常用命令 

mvn clean:清理

mvn compile:编译src/main/java目录中的程序,把Java编程成class文件,并放到target/classes目录中

mvn test-compile:编译src/main/test目录下的Java程序,拷贝到target/test-class目录中

mvn test:进行单元测试,使用Junit测试src/main/java目录下的程序是否符合要求

mvn package:打包。把程序中src/main/test下面的Java编译后的class和resources中的配置文件放入到一个压缩包中。

mvn install:把jar、war安装到本机仓库中

3.5、仓库 

存放物品:存放Jar、Maven的插件等等。


本地仓库,可以在maven安装目录/conf/settings.xml中指定。
中央仓库:最权威的,所有的资源都放在这里。
中央仓库的镜像:分担压力的。
私服:公司局域网内部使用的,就是公司自己开发的。

3.6、Maven的生命周期 

项目的构建过程:清理、编译、测试、报告、打包、安装、部署

3.7、插件 

Maven提供的功能,用来执行清理、编译、测试、报告、打包的程序。

生命周期与插件

3.8、Maven聚合 

要在项目中额外创建一个聚合模块,通过这个模块构建整个项目的所有模块。
助聚合其他模块的工具,其本身并无任何实质内容,因此聚合模块中只有一个 POM 文件。
聚合模块的打包方式(packaging)也是 pom,用户可以在其 POM 中通过 modules 下的 module 子元素来添加需要聚合的模块的目录路径。

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>net.biancheng.www</groupId><artifactId>Root</artifactId><version>1.0</version><!--定义的父类pom.xml 打包类型使pom --><packaging>pom</packaging><properties><!-- 定义一些属性 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><log4j.version>1.2.17</log4j.version><junit.version>4.9</junit.version><system.version>1.0</system.version><mysql.connector.version>5.1.18</mysql.connector.version><c3p0.version>0.9.1</c3p0.version></properties><!--dependencyManagement 标签用于控制子模块的依赖版本等信息 --><!-- 该标签只用来控制版本,不能将依赖引入 --><dependencyManagement><dependencies><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><!--引用的properties标签中定义的属性 --><version>${log4j.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><!--引用的properties标签中定义的属性 --><version>${junit.version}</version><!-- <scope>test</scope> --></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><!--引用的properties标签中定义的属性 --><version>${mysql.connector.version}</version><scope>runtime</scope></dependency><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><!--引用的properties标签中定义的属性 --><version>${c3p0.version}</version></dependency></dependencies></dependencyManagement><!--添加需要聚合的模块--><modules><module>../App-Core-lib</module><module>../App-Data-lib</module><module>../App-UI-WAR</module></modules>
</project>

3.9、Maven继承 

在父模块 POM 中声明依赖,其他模块的 POM 可通过继承父模块的 POM 来获得对相关依赖的声明。消除子模块 POM 中的重复配置,父模块 POM 的打包类型(packaging)必须是 pom。

父模块 POM 配置
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>net.biancheng.www</groupId><artifactId>Root</artifactId><version>1.0</version><!--定义的父类 POM 打包类型使pom  --><packaging>pom</packaging><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.18</version><scope>runtime</scope></dependency><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1</version></dependency></dependencies>
</project>子模块 POM 配置
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>net.biancheng.www</groupId><artifactId>App-Core-lib</artifactId><version>1.0</version><parent><groupId>net.biancheng.www</groupId><artifactId>Root</artifactId><version>1.0</version><relativePath>../Root</relativePath></parent><dependencies><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies>
</project>
http://www.lryc.cn/news/169039.html

相关文章:

  • 不同类型程序的句柄研究
  • 【Godot】解决游戏中的孤立/孤儿节点及分析器性能问题的分析处理
  • 国家网络安全宣传周知识竞赛活动小程序界面分享
  • mysql的判断语句
  • ArcGIS Maps SDK for JavaScript系列之四:添加自定义底图
  • Learn Prompt-角色扮演
  • 《动手学深度学习 Pytorch版》 6.1 从全连接层到卷积
  • 六、数学建模之插值与拟合
  • 【项目经验】:elementui表格中数字汉字排序问题及字符串方法localeCompare()
  • Spring Boot的运行原理
  • xen-gic初始化流程
  • Docker从认识到实践再到底层原理(六-1)|Docker容器基本介绍+命令详解
  • 【Flink】FlinkCDC自定义反序列化器
  • linux基础(2)
  • docker安装zookeeper(单机版)
  • 国际版阿里云/腾讯云免开户:云存储服务:云存储服务能够让你随时随地拜访和同享文件
  • 【Java】应用层协议HTTP和HTTPS
  • SpringBoot整合Flowable
  • 华为云香港S3云服务器性能测评_99元一年租用价格
  • prompt 视频收集
  • Rust :与C交互
  • 模拟实现C语言--memcpy函数和memmove函数
  • Linux目录
  • 全国职业技能大赛云计算--高职组赛题卷①(私有云)
  • STM32--PWR电源控制
  • vue+element-ui el-descriptions 详情渲染组件二次封装(Vue项目)
  • Nvme 协议第一章节学习
  • 三维模型3DTile格式轻量化压缩处理工具常用几款软件介绍
  • 【工具篇】高级 TypeScript 案例
  • 利用Python将dataframe格式的所有列的数据类型转换为分类数据类型