美文网首页
Maven 入门

Maven 入门

作者: letsgetdrunk | 来源:发表于2019-03-20 16:37 被阅读0次

    参考文章:maven到底是个啥玩意~

    What is Maven?

    Maven 是 Apache 下的一个纯 Java 开发的开源项目,简单来说是一个项目管理工具,核心功能是合理叙述项目间的依赖关系。

    Maven java项目结构

    simple
     ---pom.xml    核心配置,项目根下
     ---src
      ---main      
        ---java    java源码目录
        ---resources  java配置文件目录
      ---test
       ---java    测试源码目录
       ---resources  测试配置目录

    图中有一个target目录,是因为将该java项目进行了编译,src/main/java下的源代码就会编译成.class文件放入target目录中,target就是输出目录。

    POM.xml

    POM.xml( Project Object Model,项目对象模型 ) 是Maven工程的基本工作单元,用于描述项目如何构建,声明项目依赖,等等。执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包。

    所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version。

    <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>
        <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
        <groupId>com.companyname.project-group</groupId>
     
        <!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
        <artifactId>project</artifactId>
     
        <!-- 版本号 -->
        <version>1.0</version>
    </project>
    
    节点 描述
    project 工程的根标签。
    modelVersion 模型版本需要设置为 4.0。
    groupId 这是工程组的标识。它在一个组织或者项目中通常是唯一的。例如,一个银行组织com.companyname.project-group 拥有所有的和银行相关的项目。
    artifactId 这是工程的标识。它通常是工程的名称。例如,消费者银行。groupId 和 artifactId 一起定义了 artifact 在仓库中的位置。
    version 这是工程的版本号。在 artifact 的仓库中,它用来区分不同的版本。

    如何通过pom.xml文件获取到想要的jar包?

    为什么通过groupId、artifactId、version三个属性就能定位一个jar包?

    加入上面的pom.xml文件属于A项目,那么A项目肯定是一个maven项目,通过上面这三个属性能够找到junit对应版本的jar包,那么junit项目肯定也是一个maven项目,junit的maven项目中的pom.xml文件就会有三个标识符,比如像下图这样,然后别的maven项目就能通过这三个属性来找到junit项目的jar包了。所以,在每个创建的maven项目时都会要求写上这三个属性值的。

    如何获得groupId这些字段呢?

    一般而言,如果官方项目支持Maven,在其页面一般会有一段依赖字段以供复制,但也确实存在支持Maven但没有给出依赖字段的情况。而另一些项目的Maven特性由第三方维护,此时从官方渠道获得对Maven的支持比较困难。
    因此,查询依赖字段首选的方案,是使用Maven搜索服务进行搜索。这里推荐一个地址:mvnrepository.com

    Maven 仓库

    通过pom.xml中的配置,就能够获取到想要的jar包(还没讲解如何配置先需要了解一下仓库的概念),但是这些jar是在哪里呢?就是我们从哪里获取到的这些jar包?答案就是仓库。仓库有三类:

    1. 本地仓库 (local)
    2. 远程仓库 (remote)
      2.1 中央仓库 (默认的远程仓库)
      2.2 私服 (一般是公司内部自己设置的)
    3. 其他公共库 (e.g. 阿里云的仓库)

    获取jar包时,优先从本地仓库查找,如果本地仓库中没有且配置了私服的话,就从私服中找,如果还没有就从中央仓库中获取,并下载到本地仓库。

    相关文章

      网友评论

          本文标题:Maven 入门

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