zoukankan      html  css  js  c++  java
  • POM (Project Object Model)简介

      1  概念介绍

        一个项目所有的配置都放置在 POM 文件中:定义项目的类型、名字,管理依赖关系,定制插件的行为等等。比如说,你可以配置 compiler 插件让它使用 java1.5 来编译。

    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    2.    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
    3.    <modelVersion>4.0.0</modelVersion>   
    4.   
    5.    <groupId>com.mycompany.helloworld</groupId>   
    6.    <artifactId>helloworld</artifactId>   
    7.    <version>1.0-SNAPSHOT</version>   
    8.    <packaging>jar</packaging>   
    9.   
    10.    <name>helloworld</name>   
    11.    <url>http://maven.apache.org</url>   
    12.   
    13.    <properties>   
    14.      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>   
    15.    </properties>   
    16.   
    17.    <dependencies>  
    18.      <dependency>   
    19.        <groupId>junit</groupId>   
    20.        <artifactId>junit</artifactId>   
    21.        <version>3.8.1</version>   
    22.        <scope>test</scope>   
    23.      </dependency>   
    24.    </dependencies>   
    25.   </project>      

        在 POM 中,groupId,artifactId, packaging, version 叫作 maven 坐标,它能唯一的确定一个构件。有了 maven 坐标,我们就可以用它来指定我们的项目所依赖的其他项目,插件,或者父项目。


        


        通常,大项目一般会分成几个子项目。在这种情况下,每个子项目就会有自己的 POM 文件,然后它们会有一个共同的父项目。这样只要构建父项目就能够构建所有的子项目了。子项目的 POM 会继承父项目的 POM。另外,所有的 POM都继承了一个 Super-POM。Super-POM 设置了一些默认值,比如在前面提到的默认的目录结构,默认的插件等等,它遵循了惯例优于配置的原则。如下图:


        


      2  Pom文件的继承与聚合

      继承

        开发中一般将公共的配置——依赖关系(包括公共的类库、插件、信息配置)放到一个父项目的pom文件,然后其它项目的pom文件,都继承该pom文件。继承的代码如下:


        


        这里需要注意,子pom文件不是一旦继承了父pom就会无条件地继承它所有的依赖关系,即插件、类库等。如果子pom想继承父pom的某个插件,只需要引入父pom中该插件的groupId与artifactId信息(不用写该插件其它的配置信息)即可。这样子pom是可以有选择性的继承它自己所需要的东西。


        


      聚合

        即大项目中一般会有一个空的Maven项目(只有pom文件,没有Java代码)作为父项目,该项目的Pom文件(Modules标签中)聚合了其它子项目的Pom文件,然后只要构建父项目就能够构建所有的子项目了。


        





  • 相关阅读:
    jquery判断浏览器类型
    webservice soapheader验证方法
    webservice跨域文件,好多年前的东西,远程调用,js服务器端使用,可以远程调用
    c# 动态调用webservice 转录一下
    linq使用 count与sum等
    js date扩展方法
    c#深拷贝的一个方法
    javascript jquery document.ready window.onload
    带你上手一款下载超 10 万次的 IDEA 插件
    Knative Serving 健康检查机制分析
  • 原文地址:https://www.cnblogs.com/jeffen/p/6133282.html
Copyright © 2011-2022 走看看