maven的相關概念
maven座標
maven擁有大量組件。定位一個組件的時候,需要一系列的元素來準確的找到該組件。此時,maven座標應運而生。
Maven座標主要組成:
groupId定義當前Maven項目隸屬的實際項目。
artifactId定義MavenMaven項目的項目名稱
version定義Maven項目的版本
packaging定義Maven項目打包的方式(非必須)
classifier輔助助定義組件輸出的一些附件(非必須)
在通過原型創建的Java web項目中我們看到的dependencies
節點:
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies>
dependency
節點通過groupId,artifactId,version準確引用了項目所需要的junit包
倉庫
倉庫用來統一存儲所有Maven共享組件
maven倉庫分爲本地倉庫和遠程倉庫兩類:
本地倉庫
每個用戶只有一個本地倉庫,默認是在~/.m2/repository/(~爲用戶目錄),此目錄可以配置:
修改方法:
修改%MAVEN_HOME%/conf/setting.xml, 將文件中的
<!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ~/.m2/repository <localRepository>/path/to/local/repo</localRepository> -->
修改爲:
<localRepository>文件存儲路徑</localRepository>
遠程倉庫
當建立一個maven項目後,運行mvn clean package
時,我們看看到了許多的Downloading:
[INFO] Generating project in Batch mode Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-j2ee-simple/1.0/maven-archetype-j2ee-simple-1.0.jar Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-j2ee-simple/1.0/maven-archetype-j2ee-simple-1.0.jar (9 KB at 4.3 KB/sec) Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-j2ee-simple/1.0/maven-archetype-j2ee-simple-1.0.pom Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-j2ee-simple/1.0/maven-archetype-j2ee-simple-1.0.pom (549 B at 1.2 KB/sec) [INFO] ----------------------------------------------------------------------------
這是maven在從中央倉庫下載項目所需要的jar包。
maven默認的中央倉庫的定義是在${M2_HOME}/lib/maven-2.0.10-uber.jar
中。此包中包含一個路徑爲\org\apache\maven\project\pom-4.0.0.xml
的文件文件,在這個文件裏面定義了默認中央倉庫的地址:
<repositories> <repository> <id>central</id> <name>Maven Repository Switchboard</name> <layout>default</layout> <url>http://repo1.maven.org/maven2</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
默認倉庫組件搜索:組件搜索
maven插件
maven的核心僅僅定義了抽象的生命週期,具體的任務都是交由插件完成的。
每個插件都能實現多個功能,每個功能就是一個插件目標。
maven的生命週期與插件目標相互綁定,以完成某個具體的構建任務,例如compile就是插件maven-compiler-plugin的一個插件目標。