Maven(3)坐标

        在使用Maven之前,当项目需要用到jar包依赖时,比如需要Spring Framework依赖的时候,大家会去Spring Framework网站寻找,当需要用到Log4j时,大家又需要去Apache网站寻找。由于各个项目的风格各异,大量的时候花费在搜索、浏览网页及下载jar包文件上面,而这些工作本应该交给机器来做。机器来处理这些依赖就需要有统一的规范、法则,而Maven就定义了这样一组规则:世界上任意一个构件都可以用Maven坐标来唯一标识。只要提供正确的坐标元素,Maven就能找到对应的构件。

       Maven坐标的元素主要包括groupId,artifactId,version,packaging,classfier,根据这些元素,Maven就可以唯一标识任何一个java构件,从而能从仓库中找到对应的构件供我们使用。先来看一组坐标定义:

<dependency>
		<groupId>javax.servlet.jsp.jstl</groupId>
		<artifactId>javax.servlet.jsp.jstl-api</artifactId>
		<version>1.2.1</version>
</dependency>
        这是nexus-index的坐标定义,nexus-index是一个对Maven仓库编纂索引并提供搜索功能的类库,它是Nexus项目的一个子模块,会在后续介绍Nexus,下面先来解释一下各个坐标元素:
groupId:
        定义当前maven项目隶属的实际项目。
        首先,maven项目和实际项目不一定是一对一的关系。比如SpringFramework这一实际项目,其对应的maven项目会有很多,如: spring-core,spring-context等。这是由于maven中模块的概念,因此,一个实际项目往往会被划分成很多模块。
        其次,groupId不应该对应项目隶属的组织或公司。原因很简单,一个组织下会有很多个实际项目,如果groupId只定义到组织级别,而后面我们会看到,artifactId只能定义maven项目(模块),那么实际项目这个层将难以定义。最后,groupId的表示方式与Java包名的表示方式类似,通常与域名反向一一对应。
artifactId:
        该元素定义实际项目中的一个maven项目(模块),推荐的做法是使用实际项目名称作为artifactId前缀,这样做的好处是方便寻找实际构件。在默认情况下,maven生成的构件,其文件名会以artifactId作为开头,如:nexus-indexer-2.0.0.jar,使用实际项目名称作为前缀之后,就能方便从一个lib文件夹中找到某个项目的一组构件。
version:
       该元素定义maven项目当前所处的版本,如:nexus-indexer-2.0.0.jar的版本是2.0.0。需要注意的是,maven定义了一套完整的版本规范,以及快照(SNAPSHOT)的概念。
packaging:
      定义了maven项目的打包方式。默认值为jar,可取值:ejb / ejb3 /jar / par / rar / war。
classifier:
       该元素用来帮助定义构建输出的一些附属构件。附属构件与主构件对应,如上例中的主构件是: nexus-indexer-2.0.0.jar,该项目可能还会通过使用一些插件生成如:nexus-indexer-2.0.0.jar-javadoc.jar、nexus-indexer-2.0.0.jar-sources.jar这样一些附属构件,其包含了java文档和源代码。这时候,javadoc和sources就是这两个附属构件的classifier。这样,附属构件也就拥有了自己唯一的坐标。 




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值