关闭

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

标签: maven心得体会核心概念
577人阅读 评论(0) 收藏 举报
分类:

注:转载时请注明原作者(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。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4438次
    • 积分:105
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条