1、最简单的POM配置

<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版本,4.0.0是唯一支持MAVEN 2和3的POM版本 -->
  <modelVersion>4.0.0</modelVersion>
 
  <!-- 组织id,唯一的 -->
  <groupId>com.wang.pom</groupId>
  <!-- 项目id -->
  <artifactId>my-project</artifactId>
  <!-- 项目版本 -->
  <version>1.0.0</version>

</project>

2、POM 主要配置详解

<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版本 -->
  <!-- 4.0.0是当前唯一受支持的 POM 版本,必需 -->
  <modelVersion>4.0.0</modelVersion>
 
  <!-- 组织id,唯一的 -->
  <groupId>com.wang.pom</groupId>

  <!-- 项目id -->
  <artifactId>my-project</artifactId>

  <!-- 项目版本 -->
  <version>1.0.0</version>

  <!-- 项目打包类型 -->
  <!-- 默认为jar,其他还有pom、war等 -->
  <!-- 如果是父项目,packaging 就是 pom 类型 -->
  <packaging>jar</packaging>

  <!-- 项目名称,非必需 -->
  <name>my-project</name>

  <!-- 项目描述,非必需 -->
  <description>这个是项目的描述!</description>

  <!-- 项目url,非必需 -->
  <url>http://pom.wang.com</url>
  
  
  <!-- 值占位符 -->
  <!-- 可以在POM中的任何位置使用 ${X} 访问其值;或者插件可以将它们用作默认值。 -->
  <!-- 属性值子模块可以直接继承 -->
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>

    <maven.compiler.source>1.8</maven.compiler.source>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  
  
  <!-- 依赖列表 -->
  <dependencies>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.0</version>

      <!-- 作用范围:有编译、运行、测试编译、测试运行、打包阶段。 -->
      <!-- scope的值有:compile、provided、runtime、test、system -->     
      <!-- compile:scope默认值。参与到编译、运行、测试编译、测试运行阶段,会被打包,该依赖关系会传播到依赖项目。 -->        
      <!-- provided:参与到编译、测试编译阶段,不会被打包。该依赖关系不具有传递性。 -->        
      <!-- runtime:参与到运行、测试运行阶段,会被打包。 -->        
      <!-- test:参与到测试编译、测试运行阶段。不会被打包,它不具有传递性。 -->        
      <!-- system: 类似provided,不过依赖不会从maven远程中央仓库下载,而是从本地maven仓库中获取。-->        
      <scope>test</scope>

      <!-- systemPath 仅仅当依赖范围是 system 时使用 -->
      <!-- <systemPath>绝对路径</systemPath> -->

      <!-- optional 默认为 false。true表示当其他项目依赖此项目时不会引入该依赖。-->
      <optional>true</optional>

      <!-- 显示排除依赖项 -->
      <!-- 
      <exclusions>
        <exclusion>
            <groupId></groupId>
            <artifactId></artifactId>
        </exclusion>
      </exclusions> 
      -->
    </dependency>

  </dependencies>


  <!-- 用于管理所有子项的依赖;使用方法参考 https://www.jianshu.com/p/e867ac845e11 -->
  <!-- 
    dependencies 与 dependencyManagement 区别:
    dependencies:即使在子项目中没有写这些依赖,子项目仍然会从父项目中继承这些依赖项。
    dependencyManagement:只是声明依赖,并不会实际引入,因此子项目需要显示的声明需要用的依赖。
    如果不在子项目中声明依赖,是不会从父项目中继承下来的;
    只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该依赖项,并且version和scope都读取自父pom;
    另外如果子项目中指定了版本号,那么会使用子项目中指定的依赖项。
   -->
  <dependencyManagement>
    <dependencies>...</dependencies>
  </dependencyManagement>
  

  <!-- "Project Build" -->
  <build>
    <!-- 项目构建时的名称 -->
    <finalName>Build Name</finalName>
    
    <!-- 资源元素列表 -->
    <resources>

      <resource>
        <!-- 定义资源的位置 -->
        <directory>src/main/resources</directory>

        <!-- 指定包含的资源文件,用 * 号做通配符。 -->
        <includes>
          <include>**/*.properties</include>
          <!-- <include>...</include> -->
        </includes>

        <!-- 要排除哪些文件。在包含和排除之间冲突时,排除胜利。 -->
        <excludes>
          <exclude>**/*.xml</exclude>
          <!-- <exclude>...</exclude> -->
        </excludes>
      </resource>

      <!-- <resource>...</resource> -->
    </resources>
    
  
    <!-- 测试资源元素列表 -->
    <testResources>

      <testResource>
        <!-- 配置与资源元素类似,在测试阶段使用。测试资源不会被部署。 -->
      </testResource>

      <!-- <testResource>...</testResource> -->
    </testResources>
    

    <!-- 插件 -->
    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.0.2</version>

        <!-- true或者false,默认是false。是否加载此插件的扩展。-->
        <extensions>false</extensions>

        <!-- true或false,默认值为true。这个plugin的配置是否能被子POM继承。 -->
        <inherited>true</inherited>

        <!-- 配置插件参数 -->
        <configuration></configuration>

        <!-- 改变插件的依赖 -->
        <dependencies></dependencies>
      </plugin>

      <!-- <plugin>...</plugin> -->
    </plugins>

  </build>
  <!-- END "Project Build" -->
  
</project>