Maven

  • Maven 翻译为"专家"、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
  • Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
  • Maven 也可被用于构建和管理各种项目。

Maven POM

POM(项目对象模型,项目对象模型)是Maven工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。

执行任务或目标时,Maven会在当前目录中查找POM。它读取POM,获取所需的配置信息,然后执行目标。

对于Maven的通俗易懂解释

maven项目也是一个项目,类似于javaProject,javaWebProject,就是多了些功能

1、自动下载jar包

maven项目里有一个 pom.xml文件, 在这个文件里面,只要我们添加相应配置,它就会自动帮我们下载相应jar包,不用到处搜索需要的jar包了

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">   
 <modelVersion>4.0.0</modelVersion>
    
 <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/公司名称/项目 -->  
 <groupId>exam</groupId>    
    
 <!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->  
 <artifactId>exam_3</artifactId>  
    
 <!-- 打包的机制,如pom,jar,maven-plugin,war,ear,默认为jar -->  
 <packaging>war</packaging>    
 <!-- 用于描述 jar 包,jar 包 提供给其他系统作为依赖 
		snapshot 版本代表不稳定、尚处于开发中的版本,即快照版本
		release 版本代表功能趋于稳定、当前更新停止,可以用于发行的版本(去掉-snapshot即可)
 	-->
 <version>0.0.1-SNAPSHOT</version>   
 <!-- 定义本项目的依赖关系 -->    
 <dependencies>     
     <!-- 每个dependency都对应这一个jar包 -->  
     <dependency>
          <!-- maven是通过groupId(项目名)、artifactId(项目模块)、version(版本)这三个元素值(俗称坐标)来检索该构件,然后引入你的工程 -->   
         <groupId>junit</groupId>	       
         <artifactId>junit</artifactId>		
         <version>3.8.1</version>       
         <scope>test</scope>
     </dependency>
     <!-- 为pom定义一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${file.encoding} -->  
    <properties>  
        <file.encoding>UTF-8</file.encoding>  
        <java.source.version>1.5</java.source.version>  
        <java.target.version>1.5</java.target.version>  
    </properties> 
 </dependencies> 
</project>

maven会通过:项目名-项目模块-项目版本,在互联网上的代码库中下载相应jar包。

2、寻找依赖,下载依赖包

寻找jar包是第一基本功能,寻找依赖在这个是在这个基础上的功能。
在maven的代码库中,每一个jar包也有自己的 pom.xml文件,而这个文件里面也会有<dependency>配置,只要我们配置的jar包有依赖的其他jar包都会被maven自动下载下来。

<dependency>         
    <groupId>org.springframework</groupId>       
    <artifactId>spring-core</artifactId>        
    <version>2.6</version>   
</dependency>

3、热部署,热编译

简单来讲,就是在你web项目已经运行的时候,修改代码可以直接被web服务器所接受,不需要我们重启服务器了,或者重新部署代码了,而且我们可以直接通过maven 打包war或者jar项目。

Maven 仓库

在 Maven 的术语中,仓库是一个位置(place)。

Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。

Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。

Maven 仓库有三种类型:

  • 本地(local)
  • 中央(central)
  • 远程(remote)

本地仓库

Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。

运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

中央仓库

Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。

中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。

远程仓库

如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐