Maven基础

Maven是一个Java项目管理和构建工具,它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是Java项目不可缺少的工具。


Maven介绍

  1. 一个使用Maven管理的普通的Java项目,它的目录结构默认如下:

存放Java源码的目录是src/main/java,存放资源文件的目录是src/main/resources,存放测试源码的目录是src/test/java,存放测试资源的目录是src/test/resources,最后,所有编译、打包生成的文件都放在target目录里。

依赖管理

  1. Maven解决了依赖管理问题。例如,我们的项目依赖abc这个jar包,而abc又依赖xyz这个jar包:

    ​ 当我们声明了abc的依赖时,Maven自动把abcxyz都加入了我们的项目依赖,不需要我们自己去研究abc是否需要依赖xyz

  2. 依赖关系

    Maven定义了几种依赖关系,分别是compiletestruntimeprovided

    scope 说明 示例
    compile 编译时需要用到该jar包(默认) commons-logging
    test 编译Test时需要用到该jar包 junit
    runtime 编译时不需要,但运行时需要用到 mysql
    provided 编译时需要用到,但运行时由JDK或某个服务器提供 servlet-api
  3. 唯一ID

    对于某个依赖,Maven只需要3个变量即可唯一确定某个jar包:

    • groupId:属于组织的名称,类似Java的包名;
    • artifactId:该jar包自身的名称,类似Java的类名;
    • version:该jar包的版本。
  4. Maven镜像

    中国区用户可以使用阿里云提供的Maven镜像仓库。使用Maven镜像仓库需要一个配置,在用户主目录下进入.m2目录,创建一个settings.xml配置文件,内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <settings>
    <mirrors>
    <mirror>
    <id>aliyun</id>
    <name>aliyun</name>
    <mirrorOf>central</mirrorOf>
    <!-- 国内推荐阿里云的Maven镜像 -->
    <url>https://maven.aliyun.com/repository/central</url>
    </mirror>
    </mirrors>
    </settings>
  5. 搜索第三方组件

    最后一个问题:如果我们要引用一个第三方组件,比如okhttp,如何确切地获得它的groupIdartifactIdversion?方法是通过search.maven.org搜索关键字,找到对应的组件后,直接复制

小结

Maven通过解析依赖关系确定项目所需的jar包,常用的4种scope有:compile(默认),testruntimeprovided

Maven从中央仓库下载所需的jar包并缓存在本地;

可以通过镜像仓库加速下载。