Maven之pom文件常用标签说明

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">
    <!--声明项目描述符遵循哪一个POM模型版本-->
    <modelVersion>4.0.0</modelVersion>

    <!-- 项目坐标G-A-V-->
    <!--项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目-->
    <groupId>com.rufeng</groupId>
    <!--项目的标识符,它和group ID一起唯一标识一个构件-->
    <artifactId>maven_test1</artifactId>
    <!--项目版本号-->
    <version>1.0-SNAPSHOT</version>
    
    <!--项目名称-->
    <name>maven_test1</name>

</project>

2、引入依赖 dependency

<!--项目引入插件所需要的额外依赖-->
<dependencies>
    <!--每个依赖组成-->
    <dependency>
        <groupId>com.rufeng</groupId>
        <artifactId>maven_test1</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!--依赖在项目的使用阶段,或作用域,默认是compile-->
        <scope>compile</scope>
        <!--当计算依赖传递时,从依赖构件列表里,列出被排除的依赖构件集,告诉maven你只依赖指定的项目,不依赖指定项目的依赖-->
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

3、统一管理版本号 properties

<!--properties统一管理版本号,xxx-version可以自由命名,实现版本管理和快速更改-->
<properties>
    <spring-beans-version>4.1.6.RELEASE</spring-beans-version>
    <spring-aop-version>4.1.6.RELEASE</spring-aop-version>
</properties>
<!--引用properties的版本号,格式:${xxx-version}-->
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring-beans-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring-aop-version}</version>
    </dependency>
</dependencies>

4、继承parent,dependencyManagement,方便管理整个父、子项目

定义父项目

<groupId>com.rufeng</groupId>
<artifactId>maven_test3</artifactId>
<version>1.0-SNAPSHOT</version>
<!--项目的打包类型,默认是jar,如果是父项目,继承时必须是pom。-->
<packaging>pom</packaging>
<!--继承自该项目的所有子项目的默认依赖信息-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.6</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在子项目中指定父项目

<!--去除groupId,父项目中已定义-->
<artifactId>maven_test1</artifactId>
<version>1.0-SNAPSHOT</version>

<parent>
    <!--被继承的父项目的构件标识符-->
    <groupId>com.rufeng</groupId>
    <!--被继承的父项目的全球唯一标识符-->
    <artifactId>maven_test3</artifactId>
    <!--被继承的父项目的版本-->
    <version>1.0-SNAPSHOT</version>
    <!-- 父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。其次是relativePath位置-->
    <relativePath>../maven_test3/pom.xml</relativePath>
</parent>

5、聚合modules

便于整体打包

<groupId>com.rufeng</groupId>
<artifactId>maven_test3</artifactId>
<version>1.0-SNAPSHOT</version>
<!--聚合时,packaging不一定非得是pom,但一般和继承组合来用-->
<packaging>pom</packaging>

<!--模块(有时称作子项目) 被构建成项目的一部分-->
<modules>
    <!--列出的每个模块元素是指向该模块的目录的相对路径-->
    <module>../maven_test1</module>
    <module>../maven_test2</module>
</modules>

6、scope 控制dependency依赖的使用范围

compile : 称为编译依赖范围。如果引用的依赖没有指定scope,默认会使用该依赖范围。使用此依赖范围,表示对于上边说的编译期、测试期、运行期三种classpath都有效。
test:称为测试依赖范围。只对测试期classpath有效,典型的是JUnit依赖,只需要在编译测试代码(src/test)和运行测试的时候才需要。
provided : 已提供依赖范围。对于编译期、测试期classpath有效。使用该依赖范围,表示当前依赖将来会默认由引用项目一定引用,就不需要多引用了。
runtime : 运行时依赖范围。对于测试期、运行期classpath有效。
system : 系统依赖范围。该依赖和provided依赖范围一样,但是在使用该依赖的时候,需要指定systemPath标签,显示的指定依赖jar的路径。使用此依赖范围,表示的是从本地磁盘上找依赖,不是从maven仓库中解析了。使用此依赖的时候要注意,因为是从自己本地磁盘上找依赖,因此如果多个人在共同开发,比较麻烦,还要拷贝那个依赖jar到对方机器上的相同路径下。因此不建议使用这个依赖范围。
import : 导入依赖范围。该依赖对于上边说的三种classpath期都没有作用。该范围的依赖只在dependencyManagement标签才有效。它的作用是将目标pom的dependencyManagement标签中的依赖,合并到当前pom的dependencyManagement标签内,供引用项目中使用。由于import依赖的特殊性,一般看到import范围时,就会存在pom,即指向打包类型为pom的模块

你可能感兴趣的:(java,maven,pom文件)