前言
参考书是 龙中华 《Spring Boot 实战派》
相关链接:
https://blog.csdn.net/u013840066/article/details/104070447
POM文件
pom(Project Object Model)文件是 Maven文件的一个基本工作单元,也是Maven工作的核心,他是XML文件,包含项目的基本信息,用于描述项目如何构建、声明项目依赖等
在执行任务或者目标时,Maven 会在 当前目录中查找POM文件,然后获取所需的配置信息,再执行目标。
POM通常元素
1、dependencies
在这个依赖下 可以包含多个 dependency 依赖
2、dependency
在<dependency></dependency>中包含三个表示
<groupId> :定义路数的实际项目,坐标元素之一
<artifactId>:定义项目中的一个模块,坐标元素之一
<version> :依赖或项目的版本,坐标元素之一
dependency 是用来申明依赖,如果需要添加多个依赖,可以在dependencies中添加多个。
比如:
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
3、Scope
代表有一个在编译需要而在发布是不需要的jar包,则可以用这个scope标签标记 并设计为 provided
参数 | 描述 |
---|---|
compile | scope的默认值,表示被依赖项目需要参与当前项目的编译、测试、运行阶段,是一个比较强的依赖,打包也会包含进去。 |
provided | 表示打包时可以不用打包进去, Web Container会提供,该依赖理论上参与殡仪、测试运行等周期。 |
runtime | 表示不再编译阶段时产生作用,但会在运行和测试阶段起到作用,如JDBC驱动适合运行和测试阶段。 |
system | 和provided相似,但是在系统中要以外包JAR包的形式提供,Maven不会再repository中查找 |
test | 只在测试阶段使用,不作用于运行阶段,用于编译和运行时的测试代码,不会再项目中发布。 |
4、properties
如果要定义自定义变量,可以在<properties></properties>中进行变量定义,然后在其他节点引用该变量,好处在于:在依赖配置时引用变量,达到同一版本的目的,比如:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<solr.version>8.0.0</solr.version>
</properties>
<dependencies>
<dependecy>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>${solr.version}</version>
</dependency>
</dependencies>
5、plugin
plugin 在创建Spring boot项目时,默认提供了 spring-boot-maven-plugin插件,提供了打包的信息,可以将应用打包为jar包或者war包。
6、完整的POM文件
<?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">
<!--模型版本,声明项目描述符遵循哪个POM模型版本,该参数很少改变,但是必不可少,这是为了在maven引入新特征或其他模型更变时,确保稳定性-->
<modelVersion>4.0.0</modelVersion>
<!--父项目的坐标,如果项目没规定某个元素的值,那么副项目的对应值为项目的默认值,包括 groupId,artifactId version-->
<parent>
<!--被继承的父项目的唯一标志符-->
<groupId>org.springframework.boot</groupId>
<!--被继承的父项目的构建标志符-->
<artifactId>spring-boot-starter-parent</artifactId>
<!--被继承的父项目的版本号-->
<version>1.5.2.RELEASE</version>
<!--父项目的pom.xml的文件的相对路径,相对路径允许一个不同的路径,默认值是../pom.xml-->
<!--maven先在构建当前项目的地方寻找父项目的POM,然后在文件系统中的relativePath位置寻找,如果没有找到,则继续在本地仓库寻找,最后在远程仓库中寻找父项目的POM-->
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<!--本公司或者组织的唯一标志-->
<groupId>com.zqj</groupId>
<!--本项目中的唯一ID,一个groupId中可能有多个项目,靠artifactId区分-->
<artifactId>poiproject</artifactId>
<!--项目的版本号, 格式为 主版本.次版本.增量版本-限定版本号-->
<version>1.0.0-SNAPSHOT</version>
<!--项目的名称,用于maven产生的文档-->
<name>HelloWord</name>
<!--项目的详细描述,用于maven产生的文档,可以再html格式描述使用-->
<description>Demo for Spring Boot</description>
<dependencies>
<!--项目的依赖-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--添加template的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!--json-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.66</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<!--搭建项目(打包为可执行文件的插件)-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
结尾:
做了两年开发,发现对Spring Boot 的认知上缺少了很多东西。因此想重新认识 Spring Boot 框架 仅此而已。