Maven - POM

POM代表项目对象模型.它是Maven的基本工作单元.它是一个XML文件,作为pom.xml驻留在项目的基本目录中.

POM包含有关项目的信息以及Maven用于构建项目的各种配置细节(s ).

POM还包含目标和插件.在执行任务或目标时,Maven在当前目录中查找POM.它读取POM,获取所需的配置信息,然后执行目标.可以在POM中指定的一些配置是 :

  • 项目依赖项

  • 插件

  • 目标

  • 构建配置文件

  • 项目版本

  • 开发人员

  • 邮件列表

在创建POM之前,我们应首先确定项目 group (groupId),其名称(artifactId)及其作为这些属性的版本有助于唯一标识存储库中的项目.

POM示例

<project xmlns = "http://maven.apache.org/POM/4.0.0"
   xmlns:xsi = "https://img01.yuandaxia.cn/Content/img/tutorials/maven/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.companyname.project-group</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
</project>

应该注意每个项目应该有一个POM文件.

  • 所有POM文件都需要项目元素和三个必填字段: groupId,artifactId,version .

  • 存储库中的项目符号为 groupId:artifactId:version .

  • a的最低要求POM :



Sr.No.Node&描述
1

项目根目录

这是项目根标记.您需要指定基本架构设置,例如apache架构和w3.org规范.

2

模型版本

模型版本应为4.0.0 .

3

groupId

这是项目组的ID.这在组织或项目中通常是独一无二的.例如,银行集团com.company.bank有所有与银行相关的项目.

4

artifactId

这是项目的ID.这通常是项目的名称.例如,消费者银行业务.与groupId一起,artifactId定义了工件在存储库中的位置.

5

版本

这是项目的版本.与groupId一起,它在工件的存储库中用于将版本彼此分开.例如 :

com.company.bank:consumer-banking:1.0

com.company .bank:消费者银行:1.1.

超级POM

Super POM是Maven的默认POM.所有POM都从父或默认继承(尽管明确定义与否).这个基础POM被称为 Super POM ,并且包含默认继承的值.

Maven使用有效的POM(从超级pom加上项目配置的配置)到执行相关目标.它可以帮助开发人员在他/她的pom.xml中指定最小配置细节.尽管可以轻松覆盖配置.

查看超级POM的默认配置的一种简单方法是运行以下命令: mvn help:effective-pom

在您计算机上的任何目录中创建一个pom.xml.使用上述示例pom的内容.

在下面的示例中,我们' ve在C:\ MVNN\ project文件夹中创建了一个pom.xml.

现在打开命令控制台,转到包含pom.xml的文件夹并执行以下 mvn 命令.

C:\MVN\project>mvn help:effective-pom

Maven将开始处理并显示有效 - pom.

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'help'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.project-group:project-name:jar:1.0
[INFO]    task-segment: [help:effective-pom] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [help:effective-pom {execution: default-cli}]
[INFO]

.....

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Thu Jul 05 11:41:51 IST 2012
[INFO] Final Memory: 6M/15M
[INFO] ------------------------------------------------------------------------

在应用继承,插值和配置文件后,在控制台中显示有效POM.

<?xml version="1.0" encoding="UTF-8"?>
<!-- ============================================== -->
<!-- -->
<!-- Generated by Maven Help Plugin on 2015-04-09T11:41:51 -->
<!-- See: https://img01.yuandaxia.cn/Content/img/tutorials/maven/ -->
<!-- -->
<!-- ==============================================-->

<!-- ==============================================-->
<!-- -->
<!-- Effective POM for project -->
<!-- 'com.companyname.project-group:project-name:jar:1.0' -->
<!-- -->
<!-- ============================================== -->

<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "https://img01.yuandaxia.cn/Content/img/tutorials/maven/

2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 

http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.project-group</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <build>
      <sourceDirectory>C:\MVN\project\src\main\java</sourceDirectory>
      <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>

      <testSourceDirectory>C:\MVN\project\src\test\java</testSourceDirectory>
      <outputDirectory>C:\MVN\project\target\classes</outputDirectory>
      <testOutputDirectory>C:\MVN\project\target\test-classes</testOutputDirectory>
      <resources>
         <resource>
            <mergeId>resource-0</mergeId>
            <directory>C:\MVN\project\src\main\resources</directory>
         </resource>
      </resources>
      <testResources>
         <testResource>
            <mergeId>resource-1</mergeId>
            <directory>C:\MVN\project\src\test\resources</directory>
         </testResource>
      </testResources>
      <directory>C:\MVN\project\target</directory>
      <finalName>project-1.0</finalName>
   
      <pluginManagement>
         <plugins>
            <plugin>
               <artifactId>maven-antrun-plugin</artifactId>
               <version>1.3</version>
            </plugin>
            <plugin>
               <artifactId>maven-assembly-plugin<  /artifactId>
               <version>2.2-beta-2</version>
            </plugin>
            <plugin>
               <artifactId>maven-clean-plugin<  /artifactId>
               <version>2.2</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>2.0.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-dependency-plugin</artifactId>     
               <version>2.0</version>
            </plugin>
            <plugin>
               <artifactId>maven-deploy-plugin</artifactId>
               <version>2.4</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-ear-plugin</artifactId>
               <version>2.3.1</version>
            </plugin>
            <plugin>
               <artifactId>maven-ejb-plugin</artifactId>
               <version>2.1</version>
            </plugin>
            <plugin>
               <artifactId>maven-install-plugin</artifactId>
               <version>2.2</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-jar-plugin</artifactId>
               <version>2.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-javadoc-plugin</artifactId>
               <version>2.5</version>
            </plugin>
            <plugin>
               <artifactId>maven-plugin-plugin</artifactId>
               <version>2.4.3</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-rar-plugin</artifactId>
               <version>2.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-release-plugin</artifactId>
               <version>2.0-beta-8</version>
            </plugin>
            <plugin>
               <artifactId>maven-resources-plugin</artifactId>
               <version>2.3</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-site-plugin</artifactId>
               <version>2.0-beta-7</version>
            </plugin>
            <plugin>
               <artifactId>maven-source-plugin</artifactId>
               <version>2.0.4</version>
            </plugin>
            <plugin>
               <artifactId>maven-surefire-plugin</artifactId>
               <version>2.4.3</version>
            </plugin>
            <plugin>
               <artifactId>maven-war-plugin</artifactId>
               <version>2.1-alpha-2</version>
            </plugin>
         </plugins>
      </pluginManagement>
   
      <plugins>
         <plugin>
            <artifactId>maven-help-plugin</artifactId>
            <version>2.1.1</version>
         </plugin>
      </plugins>
   </build>
   
   <repositories>
      <repository>
         <snapshots>
            <enabled>false</enabled>
         </snapshots>
         <id>central</id>
         <name>Maven Repository Switchboard</name>
         <url>http://repo1.maven.org/maven2</url>
      </repository>
   </repositories>
   <pluginRepositories>
      <pluginRepository>
         <releases>
            <updatePolicy>never</updatePolicy>
         </releases>
         <snapshots>
            <enabled>false</enabled>
         </snapshots>
         <id>central</id>
         <name>Maven Plugin Repository</name>
         <url>http://repo1.maven.org/maven2</url>
      </pluginRepository>
   </pluginRepositories>
   <reporting>
      <outputDirectory>C:\MVN\project\target/site</outputDirectory>
   </reporting>
</project>

在上面的pom.xml中,你可以看到默认的项目源文件夹结构,输出目录,所需的插件,存储库,报告目录,哪个Maven会在执行期望的目标时使用.

Maven pom.xml也不需要手动编写. Maven提供了许多原型插件来创建项目,按顺序创建项目结构和pom.xml