美文网首页
2. Maven的相关概念

2. Maven的相关概念

作者: WarrriorKing | 来源:发表于2017-07-18 11:33 被阅读19次
    • 仓库
    • 仓库镜像
    • 构件
    • 构件的三维坐标
    • POM - 项目对象模型
    • 生命周期
    • 插件
    • Archetype - 项目模板

    仓库


    • 本地存储库
      你自己电脑上的存储库,即 settings.xml 配置文件中配置的 <localRepository> 目录

    • 中央存储库
      http://search.maven.org/
      此地址只是Maven的jar包搜索界面,真正下载jar包的库地址并不是这个

    • 私服库(Nexus)

    依赖(jar包)下载流程

    搭建在我们自己服务器中的仓库,俗称“私服库”

      当我们建立一个Maven项目后,Maven会检查pom.xml文件,来确定哪些依赖(jar包)需要下载
    
      首先,Maven会从本地存储库中搜索资源,如果没有找到,则从私服库中寻找资源,私服库中也没有的时候,
    
      则去中央仓库寻找资源,找到后先下载到私服库,再从私服库下载到我们本地存储库,这样项目就可以找到依赖了
    


    </br>

    仓库镜像


    仓库镜像可以理解为一种代理,因为“你懂得”原因,中国访问远在国外的中央服务器会受限制,所以国内出现了很多中央仓库的镜像,其中阿里的Maven仓库镜像使用的最为频繁。
    这个仓库镜像就是我们在 settings.xml 中配置的 <mirror> 节点
    但是我们没有配置阿里的镜像,而是配置的我们公司自己 Nexus 私服的镜像地址,因为我们公司自己的构件不允许上传到第三方仓库,所以我们在阿里的镜像之前加了一层私服库,而且这样能大大提高jar包的下载速度,因为只要别人使用过一次的构件,你再使用的时候,就是直接从公司内网下载了。


    </br>

    构件


    构件可以粗暴的理解为 “项目中的依赖”、“jar 包”
    构件根据用途可以分为两类:

    • 被其他构件依赖的构件
      比如我们项目中引用第三方 jar 包,声明在 pom.xml 中

      <dependencies>
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-zuul</artifactId>
          <version>1.0</version>
        </dependency>
      </dependencies>
      
    • 插件(plugin)

    这是一种特殊的构件,我们使用的所有的 mvn 命令都是插件


    </br>

    构件的三维坐标


    如果我们要为项目引入MyBatis的相关jar包,我们该怎么办呢?
    正确的做法是在 pom.xml 文件中声明我们要使用的依赖:

      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.4.4</version>
      </dependency>
    

    这样我们就可以在代码中使用MyBatis了,那么这些 jar 包是怎么找到的呢?就是通过这个构件的三维坐标,所谓的三维坐标就是上面声明中的两个id,一个版本号:

    • groupId
      项目组织唯一标识符,如:com.anhry、com.anhry.fsajj
    • artifactId
      项目或者工程唯一标识符,如:fsajj-web、fsajj-utils
    • version
      构件版本号,如:1.0.0-releases


    </br>

    POM - 项目对象模型


    POM是项目对象模型,也就是项目基础目录下的 pom.xml 这个XML文件,它是Maven项目工作的基石,所有的Maven动作都是围绕它展开的,里面包含了各种配置信息、目标、插件、依赖等等。

    每个项目只有一个pom文件,在创建pom文件前,要先决定它的三维坐标,因为这代表着此构件在仓库中的唯一标识,例如:

      <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/xsd/maven-4.0.0.xsd">
         <modelVersion>4.0.0</modelVersion>
         <groupId>com.anhry.cloud</groupId>
         <artifactId>cloud-parent</artifactId>
         <version>1.0</version>
      <project>
    


    </br>

    插件


    Maven 是一个执行插件的框架,每一个任务实际上是由插件完成的。Maven 插件通常用于:

    • 创建 jar 文件
    • 创建 war 文件
    • 编译代码文件
    • 进行代码单元测试
    • 创建项目文档
    • 创建项目报告
    • ......

    一个插件通常提供了一组目标,可使用以下语法来执行:

      mvn [plugin-name]:[goal-name]
    

    例如,一个 Java 项目可以使用 Maven 编译器插件来编译目标,通过运行以下命令编译

      mvn compiler:compile
    


    </br>

    Archetype - 项目模板


    maven 使用 Archetype 概念为用户提供不同类型的项目模板,它是一个非常大的列表(614个数字)。 maven 使用下面的命令来帮助用户快速开始构建一个新的 Java 项目:

      mvn archetype:generate
    

    输入了此命令之后,命令行会列出一个多达1000多个的模板列表,此时会提示你输入一个数字,代表你想以哪个模板为基础创建项目,输入数字后会提示你输入三维坐标,然后完成。

    所以,我们一般不会使用命令行来选择模板的方式来创建项目,我们都是使用 IDE 开发工具来创建项目。
    命令行方式依旧强大无比,但是除非你对 Maven 的命令方式特别熟练,否则不建议新手直接使用命令行方式来操作,可以借助命令行方式提高你对Maven原理的理解。

    相关文章

      网友评论

          本文标题:2. Maven的相关概念

          本文链接:https://www.haomeiwen.com/subject/iolxhxtx.html