基于2.3.2的spring boot版本分析
这是一个特殊的starter,提供了以下功能。
为子项目提供默认版本,可以省去常用包的版本号通过导入父依赖spring-boot-dependencies实现默认版本号,dependencies提供了常见maven配置的版本号
默认使用1.8jdk版本 <properties>中定义默认编码UTF-8 <properties>中定义识别资源 <build> <resources> <resource> <!-- 设定资源解析目录 --> <directory>${basedir}/src/main/resources</directory> <!-- 是否对资源目录开启资源过滤,默认false --> <filtering>true</filtering> <!-- 只处理如下配置中包含的资源类型 --> <includes> <include>**/application*.yml</include> <include>**/application*.yaml</include> <include>**/application*.properties</include> </includes> <!-- 不处理如下配置中包含的资源类型 --> <excludes> <exclude>**/*.yaml</exclude> </excludes> </resource> </resources> </build> 定义常用插件配置 <!-- 只声明插件,maven不在当前项目使用,实现子依赖可不定义版本号引用插件 --> <pluginManagement> <!-- 定义当前pom所有插件 --> <plugins> <!-- 插件 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--在构建生命周期中执行一组目标的配置--> <executions> <!--插件执行需要的信息--> <execution> <!--执行目标的标识符--> <id>repackage</id> <!--配置的执行目标--> <goals> <goal>repackage</goal> </goals> </execution> </executions> <!-- 插件配置信息 --> <configuration> <mainClass>${start-class}</mainClass> </configuration> </plugin> ····· </plugins> </pluginManagement>这是Spring Boot的核心启动器,添加了spring-boot、spring-boot-autoconfigure、spring-boot-starter-logging、jakarta.annotation-api、spring-core和snakeyaml模块
spring-boot:spring boot的依赖包 spring-boot-autoconfigure:spring boot自动装配实现的依赖包 spring-boot-starter-logging:默认sl4j+logback记录日志 jakarta.annotation-api:引入@Resource等通过注解,通过CommonAnnotationBeanPostProcessor解析 spring-core:spring core模块 snakeyaml:YAML解析器
通过依赖该模块,能够快速搭建并开发一个 Web 项目,依赖如下
spring-boot-starter:spring boot核心启动器 spring-boot-starter-json:引入jackson spring-boot-starter-tomcat:引入tomcat及websocket spring-web spring-webmvc
支持常规的测试依赖,包括JUnit、Hamcrest、Mockito以及spring-test模块。
将Spring Boot应用打包为可执行的jar或war文件
有5个goal,分别为repackage(默认)、run、start、stop和build-info repackage有两次打包过程,第一次 mvn package执行生成文件*.original,第二次打包生成可执行的软件包 maven属性指定打包的主类(jar、war等)
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--在构建生命周期中执行一组目标的配置--> <executions> <execution> <id>repackage</id> <goals> <!--执行目标--> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <!--主类--> <mainClass>${start-class}</mainClass> </configuration> </plugin>maven默认的编译插件,提供配置如下
<configuration> <!-- 源代码JDK版本 --> <source>1.8</source> <!-- 编译class文件版本 --> <target>1.8</target> <!-- 字符集编码 --> <encoding>UTF-8</encoding> <!-- 跳过测试 --> <skipTests>true</skipTests> <!-- 指定插件将使用的编译器的版本 --> <compilerVersion>1.3</compilerVersion> <!-- 编译器使用的初始内存 --> <meminitial>128m</meminitial> <!-- 编译器使用的最大内存 --> <maxmem>512m</maxmem> </configuration>maven默认将程序打成jar包的插件,具体配置如下
<configuration> <!-- 档案 --> <archive> <!-- 生成的jar中,包含pom.xml和pom.properties这两个文件 --> <addMavenDescriptor>true</addMavenDescriptor> <!-- 配置jar包的manifest文件内容 --> <manifest> <!-- 是否添加依赖jar包的路径 --> <addClasspath>true</addClasspath> <!-- 依赖jar包存在的位置 --> <classpathPrefix>lib/</classpathPrefix> <!-- 不使用添加时间戳的jar包,确保jar包一致 --> <useUniqueVersions>false</useUniqueVersions> <!-- 指定main入口 --> <mainClass>XX</mainClass> <!-- 添加默认的关于继承的键值对 --> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> </manifest> <!-- 要添加到清单的键/值对的列表 --> <manifestEntries> <!-- 在Class-Path下添加配置文件的路径 --> <Class-Path>../config/</Class-Path> </manifestEntries> </archive> <!-- jar包打包后的位置设置 --> <outputDirectory>${project.build.directory}/lib</outputDirectory> <!-- 不打包的文件 --> <excludes> <exclude>XX</exclude> </excludes> </configuration>依赖插件提供了处理artifact的功能。它可以将artifact从本地或远程存储库复制和/或解压缩到指定位置。官网
该插件提供了将artifact打包(包括其依赖项)以及遮蔽(即重命名)某些依赖项的包的功能。具有一个goal:shade。官网
支持自定义的打包结构,也可以定制依赖项等。 官网
资源插件处理项目资源到输出目录的复制。有两种不同的资源:主资源和测试资源 官网