Maven笔记-自用

Maven笔记导图

第一章 Maven概述


第一节 Why?为什么要学习Maven?


1、从『构建』角度解释


①个人开发流程
②团队开发流程

2、从『依赖』角度解释


①jar包的规模

随着我们使用越来越多的框架,或者框架封装程度越来越高,项目中使用的jar包也越来越多。项目中,一个模块里面用到上百个jar包是非常正常的。

②jar包的来源
  • 这个jar包所属技术的官网。官网通常是英文界面,网站的结构又不尽相同,甚至找到下载链接还发现需要通过特殊的工具下载。
  • 第三方网站提供下载。问题是不规范,在使用过程中会出现各种问题。
    • jar包的名称
    • jar包的版本
    • jar包内的具体细节
③jar包之间的依赖关系

框架中使用的jar包,不仅数量庞大,而且彼此之间存在错综复杂的依赖关系。依赖关系的复杂程度,已经上升到了完全不能靠人力手动解决的程度。另外,jar包之间有可能产生冲突。进一步增加了我们在jar包使用过程中的难度。

到目前为止,我们熟悉的jar包之间依赖关系有下面这些例子:

  • junit-4.12依赖hamcrest-core-1.3
  • thymeleaf-3.0.12.RELEASE依赖ognl-3.1.26
    • ognl-3.1.26依赖javassist-3.20.0-GA
  • thymeleaf-3.0.12.RELEASE依赖attoparser-2.0.5.RELEASE
  • thymeleaf-3.0.12.RELEASE依赖unbescape-1.1.6.RELEASE
  • thymeleaf-3.0.12.RELEASE依赖slf4j-api-1.7.26

而实际上jar包之间的依赖关系是普遍存在的,如果要由程序员手动梳理无疑会增加极高的学习成本,而这些工作又对实现业务功能毫无帮助。

第二节 What?什么是Maven?


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

1、构建

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

  • 原材料

    • Java源代码

    • 基于HTML的Thymeleaf文件

    • 图片

    • 配置文件

    • ……
  • 产品

    • 一个可以在服务器上运行的项目

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

  • 清理:删除上一次构建的结果,为下一次构建做好准备
  • 编译:Java源程序编译成*.class字节码文件
  • 测试:运行提前准备好的测试程序
  • 报告:针对刚才测试的结果生成一个全面的信息
  • 打包
    • Java工程:jar包
    • Web工程:war包
  • 安装:把一个Maven工程安装到Maven仓库
  • 部署:将准备好的jar包或war包部署到服务器上运行

2、依赖

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

  • junit-4.12依赖hamcrest-core-1.3
  • thymeleaf-3.0.12.RELEASE依赖ognl-3.1.26
    • ognl-3.1.26依赖javassist-3.20.0-GA
  • thymeleaf-3.0.12.RELEASE依赖attoparser-2.0.5.RELEASE
  • thymeleaf-3.0.12.RELEASE依赖unbescape-1.1.6.RELEASE
  • thymeleaf-3.0.12.RELEASE依赖slf4j-api-1.7.26

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

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

第三节 How?Maven的工作机制


第二章 Maven核心程序解压和配置


第一节 Maven核心程序解压与配置


1、解压Maven核心程序


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

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

2、指定本地仓库


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

<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\JavaSoftWare\apache-maven-3.8.1\repository</localRepository>

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

可以将原来的本地仓库删除。

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

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

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


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

<mirrors>
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
</mirrors>

4、配置Maven工程的基础JDK版本


如果按照默认配置运行,Java工程使用的JDK版本是1.5。配置的方式是:将profile标签整个复制到profiles标签内。

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

第二节 配置环境变量


1、检查JAVA_HOME配置是否正确


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

2、配置MAVEN_HOME


配置环境变量的规律:

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

PATH指向的是bin目录

3、配置PATH


%MAVEN_HOME%\bin

4、验证


命令行使用:mvn -v

第三章 使用Maven:命令行环境

学习命令行操作作为将来在IDEA中使用图形化界面操作的过渡。使用命令行可以不受IDEA这样的环境的干扰,这样就有一个纯净的测试Maven功能的环境。我们的目标是通过命令学习Maven的功能和用法。


第一节 实验一:根据坐标创建Maven工程


1、Maven核心概念:坐标


①数学中的坐标

使用x、y、z三个“向量”作为空间的坐标系,可以在空间中唯一的定位到一个点。

②Maven中的坐标
[1]向量说明

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

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

举例:

  • groupId:com.shenj.maven
  • artifactId:pro01-shenj-maven
  • version:1.0-SNAPSHOT
③坐标和仓库中jar包的存储路径之间的对应关系

坐标:

<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>

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

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

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

2、实验操作


①创建目录作为后面操作的工作空间

例如:D:\maven-workspace

②在工作空间目录下打开命令行窗口
③使用命令生成Maven工程

运行mvn archetype:generate命令

下面根据提示操作

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 7:【直接回车,使用默认值】

Define value for property ‘groupId’: com.shenj.maven

Define value for property ‘artifactId’: pro01-maven-java

Define value for property ‘version’ 1.0-SNAPSHOT: :【直接回车,使用默认值】

Define value for property ‘package’ com.shenj.maven: :【直接回车,使用默认值】

Confirm properties configuration: groupId: com.shenj.maven artifactId: pro01-maven-java version: 1.0-SNAPSHOT package: com.shenj.maven Y: :【直接回车,表示确认】

④调整

Maven默认生成的工程,对junit依赖的是较低的3.8.1版本,我们可以改成4.12版本。

自动生成的App.java和AppTest.java可以删除。

<!-- 依赖信息配置 -->
<!-- dependencies复数标签:里面包含dependency单数标签 -->
<dependencies>
    <!-- dependency单数标签:配置一个具体的依赖 -->
    <dependency>
        <!-- 通过坐标来依赖其他jar包 -->
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        
        <!-- 依赖的范围 -->
        <scope>test</scope>
    </
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值