zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    HDU 3401 Trade
    POJ 1151 Atlantis
    HDU 3415 Max Sum of MaxKsubsequence
    HDU 4234 Moving Points
    HDU 4258 Covered Walkway
    HDU 4391 Paint The Wall
    HDU 1199 Color the Ball
    HDU 4374 One hundred layer
    HDU 3507 Print Article
    GCC特性之__init修饰解析 kasalyn的专栏 博客频道 CSDN.NET
  • 原文地址:https://www.cnblogs.com/cplinux/p/9864821.html
Copyright © 2011-2022 走看看