重新认识Spring Boot(四)认识MAVEN的POM文件

前言

参考书是 龙中华 《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

scope 标签参数
参数描述
compilescope的默认值,表示被依赖项目需要参与当前项目的编译、测试、运行阶段,是一个比较强的依赖,打包也会包含进去。
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 框架 仅此而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值