Maven核心概念(1)--坐标

原创 2013年12月02日 19:07:30

注:转载时请注明原作者(lreis2010)及出处(http://blog.csdn.net/lreis2010/)!

        作者初次接触Maven是希望有一种方式能够自动化地管理项目中使用的Jar包。随着对于Maven的学习,可以了解到这是Maven的一大功能-管理项目依赖(Dependency)。

        为了管理项目依赖(Dependency),即各种Jar包,Maven必须能够精确地定位每一个Jar包,为此,Maven引入了坐标的概念。

        坐标,用于唯一标识一个物体的一组数据。

        下面是Maven对于Dependency的定义:(由于页面大小,作者删除了部分信息。有意者可以查看源文件(Dependency.java))

package org.apache.maven.model;
public class Dependency
    implements java.io.Serializable, java.lang.Cloneable, org.apache.maven.model.InputLocationTracker
{
      //--------------------------/
     //- Class/Member Variables -/
    //--------------------------/
    private String groupId;
   
    private String artifactId;

    private String version;
   
    private String type = "jar";
   
    private String classifier;
   
    private String scope;

    private String systemPath;

    private java.util.List<Exclusion> exclusions;

    private String optional;

    private java.util.Map<Object, InputLocation> locations;
	  //-----------/
     //- Methods -/
    //-----------/
}

可见,Maven对于Dependency的坐标定义为(groupId,artifactId,version,type,classifier,scope)

1)groupId(The project group that produced the dependency)

groupId定义的是当前该Dependency所隶属的项目。例如Maven项目本身分为多个子项目:Settings、Settings Builder、Model Builder等,子项目Artifact的groupId定义为org.apache.maven。

2)artifactId(The unique id for an artifact produced by the project group)

artifactId定义的是该Artifact(子项目,暂时这么理解吧。好像Maven对它有更多的定义,以后有机会再修改吧)所标识的唯一标识。例如上文中的Artifact的artifactId定义为maven-artifact。首先,该artifactId标注了该子项目所隶属的项目maven,其次又唯一标示了该子项目artifact。

3)version(The version of the dependency)

version定义的是该依赖的版本号,Maven有一定的规范。等作者解析到了再分析。

4)type(The type of dependency)

type定义的是该依赖的打包方式,默认值为jar。该值涉及到ArtifactHandler,即Artifact的处理方式,稍后再议。

5)classifier( The classifier of the dependency)

classifier用来标识构建过程中的一些附属构件。该值涉及到ArtifactHandler,即Artifact的处理方式,稍后再议。

6)scope(The scope of the dependency)

classifier定义的是该依赖的使用范围。在Artifact类中有对于各种Scope的定义,包括Artifact.SCOPE_COMPILE、Artifact.SCOPE_COMPILE_PLUS_RUNTIME、Artifact.SCOPE_TEST、Artifact.SCOPE_RUNTIME、Artifact.SCOPE_RUNTIME_PLUS_SYSTEM、Artifact.SCOPE_PROVIDED、Artifact.SCOPE_SYSTEM、Artifact.SCOPE_IMPORT。

其中(groupId,artifactId,version)是必须的元素,type是可选的,默认值为jar。

项目管理利器—maven(Maven视频教程)

-
  • 1970年01月01日 08:00

理解maven的核心概念

好久没进行java方面的开发了,最近又完成了一个java相关的任务,顺便重新体会了 maven 这一利器。 在使用过程中发现以前对maven的理解不够深入,借此机会重新梳理了一下maven的核心...
  • XBWer
  • XBWer
  • 2014-07-02 22:28:55
  • 4055

Maven 核心概念——坐标

maven 坐标(coordinates)——maven项目定义了一组标识,它们可以用来唯一一个项目,一个依赖,或者maven里的pom插件。...
  • hehexiaoyou
  • hehexiaoyou
  • 2014-05-27 20:01:25
  • 727

Maven中的核心概念

我们最能感受到的Maven的好处应该是它的“自动化构建”与“管理依赖关系”两大功能,下面就看围绕这两大功能的Maven中的核心概念。 1.    项目目录   Maven 使用约定优于配置的原则 ...
  • wang379275614
  • wang379275614
  • 2015-02-25 16:23:43
  • 2748

(九)maven核心概念-坐标

maven的最大的功能是管理项目依赖,为了方便的自动化的解析java构件(jar,war等文件),maven需要将它们唯一标识,这是依赖管理的基础,每个java构件都要有自己的唯一标识,这个唯一标识就...
  • zhangmingji
  • zhangmingji
  • 2016-08-09 10:01:03
  • 172

浅说深度学习(1):核心概念

本文首发于集智专栏 https://jizhi.im/blog/post/dl_nutshell_01 此为系列首篇,旨在提供直观简明的深度学习引导,涵盖深度学习的基本概念,而不设计很多数学...
  • lcy7289786
  • lcy7289786
  • 2017-04-21 21:53:24
  • 674

Angularjs -- 核心概念

angularjs 前端MVC框架 快速敏捷开发 前端工程师的利器
  • mytream
  • mytream
  • 2014-08-26 22:16:35
  • 7332

maven坐标详解

1、groupId:定义当前Maven项目隶属的实际项目。      1)、我们要知道,Maven项目和实际项目不一定是一对一的关系。比如SpringFrame这一实际项目,其对应的Maven项目会有...
  • tayanxunhua
  • tayanxunhua
  • 2014-02-11 09:29:16
  • 2953

spring核心概念

IOC(Inversion of Control)——控制反转         首先介绍IoC(Inversion of Control,控制反转)。这是spring的核心,贯穿始终。所谓I...
  • basycia
  • basycia
  • 2016-07-12 21:26:09
  • 1820

Spring中AOP的核心概念

Spring是J2EE开发中非常流行的框架,他最重要的两大基本功能是提供IoC容器和AOP概念的实现。这里介绍一下AOP,它的全名为Aspect-Oriented Programming,可翻译为面向...
  • zsh2050
  • zsh2050
  • 2015-03-21 21:56:06
  • 1283
收藏助手
不良信息举报
您举报文章:Maven核心概念(1)--坐标
举报原因:
原因补充:

(最多只允许输入30个字)