packing标签

定义了项目的打包方式,默认为jar
多模块项目中的父项目的pom.xml中的必须为pom

<groupId>com.xiaodashu</groupId>
<artifactId>springboot-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

optional标签

当项目A依赖D,D的添加了true,如果有别的项目B依赖A,则B不会有D的依赖。
默认为false

scope标签

1.compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去
2.test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit
3.runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段
4.provided:打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作
5.system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径

dependencyManagement标签

在多模块项目中可以通过父pom可以通过该标签管理子模块中的依赖版本,父pom中定义好依赖的版本,
子pom中的不需要定义,会自动继承父模块的版本

<!--统一管理版本号-->
    <dependencyManagement>
        <dependencies>
            <!--模块-->
            <dependency>
                <groupId>com.xiaodashu</groupId>
                <artifactId>demo-dao</artifactId>
                <version>${xiaodashu.demo-dao}</version>
            </dependency>
         </dependencies>
    </dependencyManagement>

relativePath标签

默认值为../pom.xml
依赖的查找顺序 relativePath中定义的地址 -> 本地maven仓库 -> 远程仓库
如果设置一个空值将始终从仓库中获取,不从本地路径获取

 <parent>
        <groupId>com.eveus.cap</groupId>
        <artifactId>cap-uid</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath />
 </parent>

.mvnw文件

Maven Wrapper的文件,Maven Wrapper是maven的一个第三方插件,用来保证项目在不同的环境中maven版本的统一
如果配置了mvnw,执行项目的时候可以通过mvnw代替mvn执行命令,如果本地环境中的maven版本和mvnw定义的maven版本不一致,
则通过mvnw中设置的地址下载指定版本的maven,然后通过代理调用真实的mvn来执行命令。

modelVersion标签

指定了当前POM模型的版本,对于Maven2及Maven3来说,它只能是4.0.0