深入理解Spring Cloud与微服务构建(第2版)
上QQ阅读APP看书,第一时间看更新

3.3.4 编写Pom文件

pom文件是一个xml文件,用于描述项目用到的资源、项目依赖、插件、代码位置等信息,是整个工程的核心。pom.xml文件一般放在项目的根目录下。以3.2.1节案例中工程的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">
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.forezp</groupId>
     <artifactId>hello-world</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <packaging>jar</packaging>
     <name>hello-world</name>
     <description>Demo project for Spring Boot</description>
 <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.1.0.RELEASE</version>
          <relativePath/> <!-- lookup parent from repository -->
     </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>
     <dependencies>
          <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>
      <build>
          <plugins>
              <plugin>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-maven-plugin</artifactId>
              </plugin>
          </plugins>
     </build>
</project>

pom.xml的第一行指定了xml的版本和编码方式。project的标签是该文件的根元素,它声明了pom相关的命名空间。modelVersion指定了pom的版本,对于Maven 3来说,它的版本为4.0.0。

groupId、artifactId和version是3个最重要的标签,根据这3个标签,可以在Maven仓库中唯一确定该依赖Jar。其中,groupId代表了公司、组织的名称,一般为公司域名的倒写,如本例中的com.forezp;artifactId代表该项目的全局唯一Id,如本例中的hello-world;version是指该项目的版本。将项目上传到Maven仓库中,有这3个标签才能准确无误地找到该Jar包。

parent标签用于指定父pom,本案例采用的父pom是版本号为2.1.0.RELEASE的spring-boot-starter-parent的pom。

properties标签用于声明一些常量,例如上述代码中的源码编码为UTF-8,输出代码也为UTF-8,Java版本为1.8。

dependencies标签为依赖的根元素,里面可以包含多个dependency元素,dependency里具体为各个依赖Jar的3个坐标,即groupId、artifactId和version。其中version可以缺省,如果缺省,就会默认为最新发布的版本。

build为构建标签,它可以包含plugins(插件)标签,plugins标签中可以包含若干个plugin标签,可以根据项目的需求添加相应的plugin。本例中有spring-boot-maven-plugin插件,用此插件可以启动Spring Boot工程。