Maven POM

作者: 木易林1 | 来源:发表于2019-01-03 10:40 被阅读0次

    Maven POM

    POM代表项目对象模型。它是 Maven 中工作的基本单位,这是一个 XML 文件。它始终保存在该项目基本目录中的 pom.xml 文件。
    POM 包含的项目是使用 Maven 来构建的,它用来包含各种配置信息。
    POM 也包含了目标和插件。在执行任务或目标时,Maven 会使用当前目录中的 POM。它读取POM得到所需要的配置信息,然后执行目标。部分的配置可以在 POM 使用如下:

    • project dependencies
    • plugins
    • goals
    • build profiles
    • project version
    • developers
    • mailing list

    创建一个POM之前,应该要先决定项目组(groupId),它的名字(artifactId)和版本,因为这些属性在项目仓库是唯一标识的。

    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">
       <modelVersion>4.0.0</modelVersion>
       <groupId>com.yiibai.project-group</groupId>
       <artifactId>project</artifactId>
       <version>1.0</version>
    <project>
    
    
    XML
    

    要注意的是,每个项目只有一个POM文件。

    • 所有的 POM 文件要项目元素必须有三个必填字段: groupIdartifactIdversion
    • 在库中的项目符号是:groupId:artifactId:version
    • pom.xml 的根元素是 project,它有三个主要的子节点。
    节点 描述
    groupId 这是项目组的编号,这在组织或项目中通常是独一无二的。 例如,一家银行集团com.company.bank拥有所有银行相关项目。
    artifactId 这是项目的ID。这通常是项目的名称。 例如,consumer-banking。 除了groupId之外,artifactId还定义了artifact在存储库中的位置。
    version 这是项目的版本。与groupId一起使用,artifact在存储库中用于将版本彼此分离。 例如:com.company.bank:consumer-banking:1.0com.company.bank:consumer-banking:1.1

    超级POM

    所有的POM继承自父类(尽管明确界定)。这个基础的 POM 被称为超级 POM,并包含继承默认值。 Maven使用有效的POM(超级POM加项目配置的配置)执行有关目标。它可以帮助开发人员指定最低配置的详细信息写在 pom.xml 中。虽然配置可以很容易被覆盖。 一个简单的方法来看看超级POM的默认配置,通过运行下面的命令:mvn help:effective-pom 创建一个 pom.xml 。 在下面的例子中,已经创建了一个 pom.xmlC:\MVN\ 项目文件夹中。 现在,打开命令控制台,进入包含 pom.xml 文件夹并执行以下 mvn 命令。

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

    Maven将开始处理,并显示有效的 effective-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] ------------------------------------------------------------------------
    
    
    Shell
    

    在控制台显示结果:有效POM,继承,插值,应用配置文件。

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- ================================================================= -->
    <!--                                                                   -->
    <!-- Generated by Maven Help Plugin on 2012-07-05T11:41:51             -->
    <!-- See: http://maven.apache.org/plugins/maven-help-plugin/           -->
    <!--                                                                   -->
    <!-- ================================================================= -->
    <!-- ================================================================= -->
    <!--                                                                   -->
    <!-- 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="http://www.w3.org/
    2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 h
    ttp://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>
    
    
    Shell
    

    在上面的pom.xml 中,可以看到默认的项目源文件夹结构,输出目录,插件,资料库,报表目录,Maven将使用它们来执行预期的目标。

    Maven pom.xml 无须手动写入。

    Maven提供了大量的原型插件以创建项目,包括项目结构 和 pom.xml

    如上述详细信息中提到 Maven插件Maven创建项目部分。

    相关文章

      网友评论

        本文标题:Maven POM

        本文链接:https://www.haomeiwen.com/subject/qdixlqtx.html