Maven

Maven

文章目录

  • Maven
    • Maven作用
      • 1、Maven作为依赖管理工具
      • 2、Maven作为构建管理工具
    • Maven介绍
      • 1、构建
      • 2、依赖
      • 3、Maven 的工作机制
    • Maven核心程序解压与配置
      • 1、Maven 官网地址
      • 2、解压Maven核心程序
      • 3、指定本地仓库
      • 4、配置阿里云提供的镜像仓库
      • 5、配置Mvaen工程的基础JDK版本
      • 6、配置环境变量
    • Maven核心概念
      • 1、Maven核心概念:坐标
      • 2、Maven核心概念:POM
      • 3、Maven核心概念:约定的目录结构

Maven作用


1、Maven作为依赖管理工具


  1. 使用Maven,依赖对应的jar包能够自动下载,方便、快捷又规范。
  2. 使用Maven,方便管理jar包,解决jar包之间复杂的依赖关系,防止jar之间有可能产生的冲突。

2、Maven作为构建管理工具

Maven_第1张图片

Maven介绍


Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建依赖管理支持的工具。

下载

1、构建


Java项目开发中,构建指的是使用【原材料生产产品】的过程。

构建过程包含的主要的环节:

  • 清理:删除上一次构建的结果,为下一次构建做好准备
  • 编译:Java 源程序编译成 *.class 字节码文件
  • 测试:运行提前准备好的测试程序
  • 报告:针对刚才测试的结果生成一个全面的信息
  • 打包
    • Java工程:jar包
    • Web工程:war包
  • 安装:把一个 Maven 工程经过打包操作生成的 jar 包或 war 包存入 Maven 仓库
  • 部署
    • 部署 jar 包:把一个 jar 包部署到 Nexus 私服服务器上
    • 部署 war 包:借助相关 Maven 插件(例如 cargo),将 war 包部署到 Tomcat 服务器上

2、依赖


如果 A 工程里面用到了 B 工程的类、接口、配置文件等等这样的资源,那么我们就可以说 A 依赖 B。例如:

  • junit-4.12 依赖 hamcrest-core-1.3

依赖管理中药解决的具体问题:

  • jar 包的下载:使用 Maven 之后,jar 包会从规范的远程仓库下载到本地
  • jar 包之间的依赖:通过依赖的传递性自动完成
  • jar 包之间的冲突:通过对依赖的配置进行调整,让某些jar包不会被导入

3、Maven 的工作机制


Maven_第2张图片

Maven核心程序解压与配置


1、Maven 官网地址


首页:

Maven – Welcome to Apache Maven(opens new window)

下载页面:

Maven – Download Apache Maven(opens new window)

下载链接:

Maven_第3张图片

具体下载地址:https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.zip

2、解压Maven核心程序


核心程序压缩包:apache-maven-3.8.4-bin.zip,解压到非中文、没有空格的目录。例如:

Maven_第4张图片

在解压目录中,我们需要着重关注 Maven 的核心配置文件:conf/settings.xml

3、指定本地仓库


本地仓库默认值:用户家目录/.m2/repository。由于本地仓库的默认位置是在用户的家目录下,而家目录往往是在 C 盘,也就是系统盘。将来 Maven 仓库中 jar 包越来越多,仓库体积越来越大,可能会拖慢 C 盘运行速度,影响系统性能。所以建议将 Maven 的本地仓库放在其他盘符下。配置方式如下:


<localRepository>F:\apache-maven-3.8.4\repositorylocalRepository>

本地仓库这个目录,我们手动创建一个空的目录即可。

记住:一定要把 localRepository 标签从注释中拿出来

注意:本地仓库本身也需要使用一个非中文、没有空格的目录。

4、配置阿里云提供的镜像仓库


Maven下载jar包默认访问境外的中央仓库,而国外网站速度很慢。改成阿里云提供的镜像仓库,访问国内网站,可以让Maven下载jar包的时候速度更快。配置的方式是: 将下面mirror标签复制到settings.xml文件的mirrors标签的内部。

<mirror>
    <id>nexus-aliyunid>
    <mirrorOf>centralmirrorOf>
    <name>Nexus aliyunname>
    <url>http://maven.aliyun.com/nexus/content/groups/publicurl>
mirror>

5、配置Mvaen工程的基础JDK版本


如果按照默认配置运行,Java 工程使用的默认 JDK 版本是 1.5,而我们熟悉和常用的是 JDK 1.8 版本。修改配置的方式是:将 profile 标签整个复制到 settings.xml 文件的 profiles 标签内。

<profile>
    <id>jdk-1.8id>
    <activation>
        <activeByDefault>trueactiveByDefault>
        <jdk>1.8jdk>
    activation>
    <properties>
        <maven.compiler.source>1.8maven.compiler.source>
        <maven.compiler.target>1.8maven.compiler.target>
        <maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
    properties>
profile>

6、配置环境变量


1、检查JAVA_HOME配置是否正确


Maven 是一个用 Java 语言开发的程序,它必须基于 JDK 来运行,需要通过 JAVA_HOME 来找到 JDK 的安装位置。

使用以下命令进行验证:

Maven_第5张图片

2、配置 MAVEN_HOME


Maven_第6张图片

TIP

配置环境变量的规律:

XXX_HOME 通常指向的是 bin 目录的上一级

PATH 指向的是 bin 目录

3、配置PATH


Maven_第7张图片

Maven_第8张图片

4、验证


Maven_第9张图片

Maven核心概念


1、Maven核心概念:坐标


① maven中的坐标

[1] 向量说明

使用三个【向量】在【Maven的仓库】中唯一的定位到一个【jar】包。

  • groupId:公司或组织的 id
  • artifactId:一个项目或者是项目中的一个模块的 id
  • version:版本号

[2] 三个向量的取值方式

  • groupId:公司或组织域名的倒序,通常也会加上项目名称
    • 例如:com.xujc.maven
  • artifactId:模块的名称,将来作为 Maven 工程的工程名
  • version:模块的版本号,根据自己的需要设定
    • 例如:SNAPSHOT 表示快照版本,正在迭代过程中,不稳定的版本
    • 例如:RELEASE 表示正式版本

举例:

  • groupId:com.xujc.maven
  • artifactId:pro01-xujc-maven
  • version:1.0-SNAPSHOT

② 坐标和仓库中 jar 包的存储路径之间的对应关系

坐标:

  <groupId>javax.servletgroupId>
  <artifactId>servlet-apiartifactId>
  <version>2.5version>

上面坐标对应的 jar 包在 Maven 本地仓库中的位置:

Maven本地仓库根目录\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar

一定要学会根据坐标到本地仓库中找到对应的 jar 包

2、Maven核心概念:POM


① 含义

POM:Project Object Model,项目对象模型。和 POM 类似的是:DOM(Document Object Model),文档对象模型。它们都是模型化思想的具体体现。

② 模型化思想

POM 表示将工程抽象为一个模型,再用程序中的对象来描述这个模型。这样我们就可以用程序来管理项目了。我们在开发过程中,最基本的做法就是将现实生活中的事物抽象为模型,然后封装模型相关的数据作为一个对象,这样就可以在程序中计算与现实事物相关的数据。

③ 对应的配置文件

POM 理念集中体现在 Maven 工程根目录下 pom.xml 这个配置文件中。所以这个 pom.xml 配置文件就是 Maven 工程的核心配置文件。其实学习 Maven 就是学这个文件怎么配置,各个配置有什么用。

④ pom.xml 解读



<groupId>com.jtl.mavengroupId>

<artifactId>pro01-maven-javaartifactId>

<version>1.0-SNAPSHOTversion>





<packaging>jarpackaging>

<name>pro01-maven-javaname>
<url>http://maven.apache.orgurl>

<properties>
    
    <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
properties>


<dependencies>
    
    <dependency>

        
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        <version>4.12version>

        
        <scope>testscope>
    dependency>
dependencies>

3、Maven核心概念:约定的目录结构


① 各个目录的作用

Maven_第10张图片

另外还有一个 target 目录专门存放构建操作输出的结果。

② 约定目录结构的意义

Maven 为了让构建过程能够尽可能自动化完成,所以必须约定目录结构的作用。例如:Maven 执行编译操作,必须先去 Java 源程序目录读取 Java 源代码,然后执行编译,最后把编译结果存放在 target 目录。

③ 约定大于配置

Maven 对于目录结构这个问题,没有采用配置的方式,而是基于约定。这样会让我们在开发过程中非常方便。如果每次创建 Maven 工程后,还需要针对各个目录的位置进行详细的配置,那肯定非常麻烦。

目前开发领域的技术发展趋势就是:约定大于配置,配置大于编码。

你可能感兴趣的:(框架学习,maven,java)