06.maven的相关概念
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>/path_to_maven_store</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的一个插件目标。