Maven学习,解析,Maven坐标简介

 学习Maven之一

       接下来我们介绍下面这几个核心概念:

       Maven坐标

       Maven仓库

       POM(Project Object Model)

       Maven插件

       Maven生命周期

       Maven依赖管理

   Maven坐标

       在我们开发Maven项目的时候,需要为其定义适当的坐标,这是Maven强制要求的。在这个基础上,其他

Maven项目才能应用该项目生成的构件。在maven项目pom.xml配置文件很重要,入下这样写的:

  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"   
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0   
  5. http://maven.apache.org/maven-v4_0_0.xsd">  
  6.     <modelVersion>4.0.0</modelVersion>   
  7.     <groupId>com.maven</groupId>    
  8.     <artifactId>maven-ut</artifactId>    
  9.     <version>0.0.1SNAPSHOT</version>   
  10.     <dependencies>  
  11.        <dependency>  
  12.            <groupId>junit</groupId>  
  13.                <artifactId>junit</artifactId>  
  14.                <version>4.0</version>  
  15.        </dependency>  
  16.     
  17.     </dependencies>  
  18.     
  19. </project>  

groupId  :groupId的值是项目的包名  

artifactId :artifactId的值是模块名 

version :version的值是版本       


   Maven的一个核心的作用就是管理项目的依赖,引入我们所需的各种jar包等。为了能自动化的解析任何一个Java

构件,Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们要说的坐标。

包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能才其它项目中进行依赖引用。


何为使用Maven坐标


       Maven的世界是拥有非常多的Java构件的,可能是jar、可能是war、也可能是其他的一些东西。

        Maven制定了一套规则,使用坐标进行唯一标识。Maven的坐标元素包括groupId、artifactId、version、packaging、classfier。提供正确的坐标元素,Maven就能找到对应的构件,首先本地仓库查找,没有的话再去远程仓库下载。如果没有配置远程仓库,会默认从中央仓库地址(http://repo1.maven.org/maven2)下载构件,该中央仓库包含了世界上大部分流行的开源项目构件,但不一定所有构件都有。

坐标详解


       Maven坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的坐标,通过坐标作为其唯一标识,而一

组Maven坐标是通过一些元素定义的,它们是groupId,artifactId,version,packaging,class-sifer。需要注意的是

groupId、artifactId、version、packaging是必须定义的,classifier是不能被直接定义的,因为附属构件不是项目

直接默认生成的,而是由附加的插件帮助生成的。

       这样的坐标我们可在pom.xml配置文件中找到,下面是一组坐标定义:

       

       下面讲解一下各个坐标元素

groupId

       定义当前Maven项目隶属的实际项目。Maven项目和实际项目不一定是一对一的关系。由于Maven中模块的概念,因此,一个实际项目往往会被划分成很多模块。其次,groupId不应该对应项目隶属的组织或公司。因为一个组织下会有很多实际项目,如果groupId只定义到组织级别,而后面我们会看到,artifactId只能定义Maven项目(模块),那么实际项目这个层次将难以定义。最后,groupId的表示方式与Java包名的表达方式类似,通常与域名反向对应。

artifactId

       该元素定义当前实际项目中的一个Maven项目(模块),推荐的做法是使用实际项目名称作为artifactId的前

缀。

version

      该元素定义Maven项目当前所处的版本。

 packaging

该元素定义Maven项目打包的方式,打包方式通常与所生成构件的文件扩展名对应,如上的packaging为jar,最终的文件名为helloworld-1.0-SNAPSHOT.jar。也可以打包成war, ear等。当不定义packaging的时候,Maven会使用默认值jar

classifier

 该元素用来帮助定义构建输出的一些附件。附属构件与主构件对应,如上例中的主构件为helloworld-1.0-

SNAPSHOT.jar,该项目可能还会通过一些插件生成如helloworld-1.0-SNAPSHOT-javadoc.jar,helloworld-1.0-

SNAPSHOT-sources.jar, 这样附属构件也就拥有了自己唯一的坐标。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值