Maven核心概念(1)--座標

注:轉載時請註明原作者(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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章