pom.xml
1.0、参考
1.1、pom简介

pomproject object model

pom.xml文件是Maven项目的配置文件,一般都是放在项目的根目录下。

pom.xmlmvn命令在执行目标时读取。

pom.xml文件中节点含义如下:

1.1、project

pom.xml文件的根节点,配置命名空间。

示例:

<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/maven-v4_0_0.xsd">
    
</project>
1.2、modelVersion

pom的版本,固定为4.0.0

示例:

<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/maven-v4_0_0.xsd">
    
    <modelVersion>4.0.0</modelVersion>
    
</project>
1.3、groupId & artifactId & version

groupId是项目创建团体或组织的唯一标志符,通常是域名倒写,如org.apache.maven

artifactIdartifact(产物)的编号,他在groupId下必须唯一。

versionartifact的版本,如1.00.0.1-SNAPSHOT等, 其中SNAPSHOT表示项目开发中,为开发版本。

示例:

<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/maven-v4_0_0.xsd">
    
    <groupId>com.fpliu</groupId>
    <artifactId>maven-newton-plugin</artifactId>
    <version>1.0-SNAPSHOT</version>
    
</project>

这3个组合起来称为坐标,唯一定位一个artifact

1.4、packaging

packaging用于指定打包的方式,如jarwarearaar等等。默认为jar

packaging不仅决定着项目最终产生何种后缀的文件,也决定着build过程中会使用什么样的插件

示例:

<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/maven-v4_0_0.xsd">
    
    <packaging>maven-plugin</packaging>
    
</project>
1.5、name & description & url

name是项目的名字。

description是项目的描述。

url是项目的网址。

这3项是在Maven生成的文档中展现。一般不是必须,但是最好填写上。

示例:

<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/maven-v4_0_0.xsd">
    
    <name>maven-newton-plugin Maven Mojo</name>
    <url>http://maven.apache.org</url>
    
</project>
1.6、dependencies

dependencies节点用于配置该项目依赖的库。

dependencies节点下可以有多个dependency子节点,dependency子节点中添加具体依赖的坐标(groupIdartifactIdversion)。

示例:

<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/maven-v4_0_0.xsd">
    
    <dependencies>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <version>2.0</version>
        </dependency>
    </dependencies>
    
</project>
1.7、build

build节点用于配置该项目依赖的插件。

build节点下的plugins子节点下可以有多个plugin子节点,plugin子节点中添加具体依赖的坐标(groupIdartifactIdversion)。

示例:

<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/maven-v4_0_0.xsd">
    
    <build>
        <plugins>
            <plugin>
                <groupId>com.fpliu</groupId>
                <artifactId>maven-newton-plugin</artifactId>
                <version>1.0-SNAPSHOT</version>
            </plugin>
        </plugins>
    </build>
    
</project>
1.8、parent

parent节点用于配置多个子模块中需要的公共依赖。

Spring Boot就是使用parent依赖他们封装好的starter, 从而提高开发效率的。

示例:

<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/maven-v4_0_0.xsd">
    
    <parent>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-plugin-api</artifactId>
        <version>2.0</version>
    </dependencies>
    
</project>

注意:parent看起来与dependency差不多, 但是,实际上他们的行为是有差别的。具体差别就是,当你用parent的使用, 只是依赖指定的那个pom的依赖,不会依赖它自己的代码。