• Maven学习 六 pom.xml文件


    java jar包的搜索网址:http://mvnrepository.com/

     pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素,这种项目之间的关系分为三种:1:依赖关系,2:继承关系,3:聚合关系

    (一)描述项目自身的信息

     <modelVersion>4.0.0</modelVersion>
      <groupId>com.czbank</groupId>
      <artifactId>jarMavenProject</artifactId>
      <version>0.0.1-SNAPSHOT</version>

    modelVersion:声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的 ,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。

    groupId:项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成,如com.mycompany.app生成的相对路径为:/com/mycompany/app

    artifactId:构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID 和groupID;在某个特定的group ID下,artifact ID也必须是唯一的。构件是项目产生的或使用的一个东西,Maven 为项目产生的构件包括:JARs,源码,二进制发布和WARs等。

    packaging:项目产生的构件类型,例如jar、war、ear、pom。插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型

    version:项目当前版本,格式为:主版本.次版本.增量版本-限定版本号

    (二)描述当前项目依赖的关系

    就是A项目需要使用B项目打成的包,就是A 项目依赖B项目。在pom.xml文件中,使用<dependencies>与<dependency>来描述

    <dependencies>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
      </dependencies>

    在当前的项目中引入另外一个项目的坐标,使用上面坐标,并且如果A 依赖B,B依赖C,那么在A项目的pom.xml文件中只需要引入B的坐标,A项目也会把B依赖的C项目的包下载到项目中。在pom.xml中配置的依赖包,都可以在项目视图的Maven Dependencies中看到

    (三)继承关系

     父项目是pom类型,子项目jar或war,如果子项目还是其他项目的父项目,子项目也是pom类型.

     有继承关系后,子项目中出现<parent>标签,如果子项目和<groupId>和<version>与父项目项目,在子项目中可以不配置<groupId>和<version>,如果子项目与副项目的版本不一样,可以配置子项目的<version>标签,父项目pom.xml中是看不到有哪些子项目.在逻辑上具有父子

    (1)创建父项目

    项目的继承关系与类之间的继承关系相似,父项目有的内容,子项目必须有。在创建具有子项目的Maven时,打包方式一定选择pom方式。

    创建好打包方式为pom的项目之后,在pom.xml文件加入一个依赖坐标,如下图

    加入了依赖的项目坐标,发现项目结构中并没有下载所依赖的包

    (2)创建子项目

    创建子项目,需要Parent Project处选择父项目的坐标信息

    在子项目的pom.xml文件会有一个<parent>标签,标签中的子标签是父项目的坐标信息,如下图

    因为子项目的版本号,与公司名称都认为和父项目相同,因此我们看到<groupId>与<version>标签报警告,这个两个标签可以从子项目的pom文件中删除。

    在子项目的中,并没有任何的<dependencies>与<dependecy>标签,但是在项目结构中还是有Maven Dependencies,是因为这些依赖的jar包是从父项目中继承过来的

    (四)聚合关系

    4.1 前提是继承关系.父项目会把子项目包含到父项目中.

    4.2 子项目的类型必须是Maven Module而不是maven project

    4.3 新建聚合项目的子项目时,点击父项目右键新建Maven Module

    4.4 具有聚合关系的父项目,在父项目的pom.xml会使用<modules>标签把子模块包含进来

    4.5 在子项目的pom.xml文件中,有<parent>标签

    4.6  聚合项目中,父项目和子模块依赖包的管理

      一般希望整个项目所有依赖的包,在父项目的pom.xml文件中都放在<dependencyManagement>标签中,这样如果子项目依赖哪一个包,就只需要在自己的pom.xml文件中引入,如果不需要就不引入。并且在子项目中引入父项目管理的依赖包时,在包的坐标中可以去掉<version>标签,包的版本号由父项目统一管理。

      如果父项目依赖的包没有放入<dependencyManagement>标签中,那么这些包会被所有的子项目都导入,这样会造成空间的浪费。

    <dependencyManagement> 写在父项目

         作用:声明可能使用到的所有jar

        子项目中只需要有坐标的<groupid>和<artifactid>,<version>继承父项目

    在父项目中<properties>把所有版本号进行统一管理

    父项目pom.xml文件下:

    <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.mavenTest</groupId>
      <artifactId>parent</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>pom</packaging>
      <!-- 依赖包版本管理 -->
      <properties>
              <!-- 定义版本号标签,标签名称可以随便起 -->
            <spring-web>4.3.3.RELEASE</spring-web>
     </properties>
     <!-- 父项目管理的依赖包 -->
      <dependencyManagement>
          <dependencies>
              <dependency>
                  <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <!--引用版本号的值  -->
                <version>${spring-web}</version>
              </dependency>
          </dependencies>
      </dependencyManagement>
    
    <!-- 父项目中的模块 -->
      <modules>
          <module>child02</module>
      </modules>
    </project>

    在子项目中的pom.xml文件如下

    <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>
      <parent>
        <groupId>com.mavenTest</groupId>
        <artifactId>parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
      </parent>
      <artifactId>child02</artifactId>
      
      <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
            </dependency>
        </dependencies>
      
    </project>
  • 相关阅读:
    完全N叉树寻找祖先
    MySql_Front新建数据库遇到访问地址冲突问题
    C++金额的中文大写
    STL_sort cmp
    螺旋数组
    ~
    Struts向JSP中传值
    Struts1-配置文件部分
    jQuery Ajax 的 load()方式
    jquery animate
  • 原文地址:https://www.cnblogs.com/cplinux/p/9864821.html
Copyright © 2020-2023  润新知