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的一个插件目标。