zoukankan      html  css  js  c++  java
  • Maven POM入门

    Super POM(project object model)

    Maven内置了一个默认的POM(不在项目中,因此不可见),每一个project都会继承自这个默认的POM,因此叫Super POM。除非在项目的配置(POM)中显式的修改,否则使用默认的配置。不同的Maven版本,默认的POM也不一样,遇到问题则需要自己检查。

    最小的POM

    一个project就是一个artifact,project的全称为: <groupId>:<artifactId>:<version>。

    在Maven1中是project.xml,Maven2改成了pom.xml。在Maven1中还有一个maven.xml用于包含可以执行的目标,在Maven2已经配置到了pom.xml中。

    <projectxmlns="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.ebay.raptor.samples</groupId>
       <artifactId>SamplesParent</artifactId>
       <version>1.1.0-SNAPSHOT</version>
    </project>


    artifact可以是任何东西,包括JAR, WAR,POM, EBA文件等。group只是artifact的命名空间,有点类似于java的包。如果项目还处在开发阶段,在版本后会有一个"SNAPSHOT",Maven只允许snapshot artifact被更新,release版本是不能更新的。

    modelVersion很重要,因为不同的model,POM的格式是不一样的。

    以上几个节点构成了一个最小的POM,这些是POM必须拥有的信息。

    继承

    如果我们需要把一个artifact放到另一个artifact中,就需要设置继承关系,这个继承关系是由子的module来维护的,因此会在module的pom中有一个parent节点。

    <project>
     <parent>
       <groupId>com.mycompany.app</groupId>
       <artifactId>my-app</artifactId>
       <version>1</version>
      </parent>
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.mycompany.app</groupId>
     <artifactId>my-module</artifactId>
     <version>1</version>
    </project>

    刚才上面讲的是目录结构是如下的时候:

    |-- my-module
    |   `-- pom.xml
     `-- pom.xml

    如果目录结构是下面的样子,

    |-- my-module
    |   `-- pom.xml
     `-- parent
         `-- pom.xml
    则需要在parent中添加relativePath节点:
    <project>
     <parent>
       <groupId>com.mycompany.app</groupId>
       <artifactId>my-app</artifactId>
       <version>1</version>
       <relativePath>../parent/pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>my-module</artifactId>
    </project>

    集成(aggregation)

    和继承有点类似,但是父子关系是由父的POM来维护的。方法是在POM中添加modules节点:

    <project>
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.mycompany.app</groupId>
     <artifactId>my-app</artifactId>
     <version>1</version>
     <packaging>pom</packaging> 
     <modules>
       <module>my-module</module>
     </modules>
    </project>

    节点module其实是目录名称,因此如果module不在app中,而是与app平级,则可以写成这样:

     <modules>
       <module>../my-module</module>
     </modules>

    项目插值与变量

    整个POM相当于一个对象,子节点就是一个个属性,因此可以直接访问:

    <version>${project.version}</version>

    另外,还有几个特殊的变量:

    project.basedir

    当前项目所在的目录

    project.baseUri

    当前项目所在的目录,只不过用 URI的格式表示. 从Maven 2.1.0开始

    maven.build.timestamp

    Build的开始时间.从Maven 2.1.0-M1开始

    在project也可以自定义自己的变量,方法是在properties中添加属性:

    
    
      <properties>
        <mavenVersion>2.1</mavenVersion>
      </properties>
  • 相关阅读:
    【环境巡检】使用jmeter+ant+Jenkins+企业微信自动化巡检_测试报告中有接口失败才通知(4)
    【环境巡检】使用jmeter+ant+Jenkins+企业微信自动化巡检_集成Jenkins定时发送企业微信+邮件(3)
    【环境巡检】使用jmeter+ant+Jenkins+企业微信自动化巡检_ant调用jmeter脚本并生成报告(2)
    【CI/CD】Jenkins查询及自定义工作空间(自由风格项目、maven项目)
    【环境巡检】使用jmeter+ant+Jenkins+企业微信自动化巡检_jmeter实现脚本及响应超时、失败重试(1)
    day 18 面向对象-类与类之间的关系
    day 17 面向对象-成员
    day16 面向对象
    day14 内置函数2
    day013 内置函数
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3155507.html
Copyright © 2011-2022 走看看