之前通過一個helloworld的例子來說一說如何創建maven項目以及maven項目的項目結構,然后講maven如何編譯運行項目。接下來介紹maven中幾個比較重要的概念:坐標和倉庫。Maven快速入門系列 完整地址:https://www.cnblogs.com/zhangweizhong/category/1771605.html
一、 坐標
maven中,所有的依賴、插件和生成的jar包統稱為構件,坐標就是所有的構件的唯一標識。所有構件均通過坐標進行組織和管理。maven 的坐標通過 5 個元素進行定義,其中 groupId、artifactId、version 是必須的,packaging 是可選的(默認為jar),classifier 是不能直接定義的。
- groupId:定義當前 Maven 項目所屬的實際項目,跟 Java 包名類似,通常與域名反向一一對應。
- artifactId:定義當前 Maven 項目的一個模塊,默認情況下,Maven 生成的構件,其文件名會以 artifactId 開頭,如 hibernate-core-3.6.5.Final.jar。
- version:定義項目版本。
- packaging:定義項目打包方式,如 jar,war,pom,zip ……,默認為 jar。
- classifier:定義項目的附屬構件,如 hibernate-core-3.6.6.Final-sources.jar,hibernate-core-3.6.6.Final-javadoc.jar,其中 sources 和 javadoc 就是這兩個附屬構件的 classifier。classifier 不能直接定義,通常由附加的插件幫助生成。
項目中pom.xml 文件中定義:
所以,一般我們實際項目的開發過程中,java的包名一般對應groupId,項目名對應artifactId。
二、 倉庫
所謂倉庫,就是Maven 根據構件的坐標統一存儲這些構件的唯一副本的目錄。在項目中通過坐標依賴聲明,可以方便的引用構件。
Maven 倉庫分為本地倉庫和遠程倉庫,Maven尋找構件時,首先從本地倉庫找,本地找不到則到遠程倉庫找,再找不到就報錯;在遠程倉庫中找到了,就下載到本地倉庫再使用。
本地倉庫是存儲在本機的構件倉庫,默認地址為:${user.home}/.m2/repository。
中央倉庫是 Maven 核心自帶的遠程倉庫,默認地址:http://repo1.maven.org/maven2。除了中央倉庫,還有其它很多公共的遠程倉庫。
私服是架設在本機或局域網中的一種特殊的遠程倉庫,通過私服可以方便、統一的管理其它所有的外部遠程倉庫。
實際項目中為方便、統一的管理,一般會創建私服以確保所有的項目環境使用的都是同一個版本的構件,。
1 . 本地倉庫
Maven 本地倉庫默認地址為:${user.home}/.m2/repository。安裝完 Maven ,本地倉庫幾乎是空的,這時需要從遠程倉庫下載所需構件。
如何修改本地倉庫默認地址?
通過修改 %MAVEN_HOME%/conf/settings.xml 配置文件可以更改本地倉庫的位置。
2 . 中央倉庫
Maven 配置了一個默認的遠程倉庫,即中央倉庫,找到 %MAVEN_HOME%/lib/maven-model-builder-3.2.1.jar,
打開 org/apache/maven/model/pom-4.0.0.xml 超級POM,所有的項目都會繼承這個POM:
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
<id>central</id> 標識中央倉庫的唯一標識。
<url> 就是中央倉庫的地址。
<snapshots> 配置的是false,就是不下載版本為快照的構件。
中央倉庫包含的絕大多數開源項目的構件。基本上平時開發用到的框架這里都能找到。
3. 其他公共遠程倉庫
除了maven的中央倉庫,由於網絡的原因,很多其他的大公司也提供了公共的遠程倉庫,又叫鏡像倉庫。
修改%MAVEN_HOME%/conf/settings.xml ,默認配置了nexus-aliyun 鏡像倉庫。
<mirror> <id>nexus-aliyun</id> <mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
注意:如果配置了鏡像倉庫,那么所有的對中央倉庫的訪問,都會自動轉到鏡像倉庫。
最后
以上,介紹了Maven的兩個重要的概念坐標和倉庫。理解起來比較簡單,這些是開發者必學必會的基礎技能。請大家關注!