Maven笔记详细整理

目录

1、Maven概述

1.1、引入Maven

1.2、Maven能够解决的问题

1.3、Maven的核心功能

2、Maven下载安装以及配置阿里云镜像

3、Maven仓库的分类

3.1、本地仓库

3.3、私服仓库

4、Maven构建工程

4.1、Maven构建Java工程

4.2、Maven构建JavaWeb工程

4.3、创建Java&resources目录

4.4、打包方式

5、pom.xml管理

5.1、Maven坐标和依赖

5.2、添加依赖包

5.3、依赖范围


 

1、Maven概述

1.1、引入Maven

Maven 翻译为"专家"、"内行",是 Apache 下的一个纯 Java 开发的开源项目。【Maven 是一个项目管理工具】它包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统,和用来运行定义在生命周期阶段中插件目标的工具。

1.2、Maven能够解决的问题

 可以用更通俗的方式来说明。我们知道,项目开发不仅仅是写写代码而已,期间会伴随着各种必不可少的事情要做,下面列举几个感受一下:

1. 我们需要引用各种jar包,尤其是比较大的工程,引用的jar包往往有几十个乃至上百个,每用到一种jar包,都需要手动引入工程目录,而且经常遇到各种让人抓狂的jar包冲突,版本冲突。
2. 我们写好的java文件,需要通过javac编译成class文件才能交给JVM运行。这项工作可以由各种集成开发工具帮我们完成 Eclipse、IDEA 等都可以将代码即时编译。 
3. 世界上没有不存在 bug 的代码,因此写完了代码,我们还要写一些单元测试,然后一个个的运行来检验代码质量。 
4. 我们后面还需要把代码与各种配置文件、资源整合到一起,进行打包。如果是 web 项目,还需要将之发布到服务器 。

如果现在有一种工具,可以把你从上面的繁琐工作中解放出来,能帮你构建工程,管理 jar包,编译代码,还能帮你自动运行单元测试,打包,生成报表,甚至能帮你部署项目,生成 Web 站点,你会心动吗? Maven 就可以解决上面所提到的这些问题。  

1.3、Maven的核心功能

依赖管理

1、传统的 WEB 工程中,我们必须将工程所依赖的 jar 包复制到工程中,导致了工程的变得很大。 

2、maven的 WEB 工程中不直接将jar包导入到工程中,而是通过在 pom.xml 文件中添加所需jar包的坐标。项目运行时,通过读取坐标到一个专门用于“存放jar包仓库"(Maven仓库)找到相应的jar包。

一键构建 

指的是项目从编译、测试、打包、安装,部署整个过程都交给maven进行管理,这个过程称为构建。 

指的是整个构建过程,使用 maven 一个命令可以轻松完成整个工作。

2、Maven下载安装以及配置阿里云镜像

请查看我之前发布的文章

Maven安装和配置阿里云镜像(解决在idea中Maven加载依赖慢的问题,保姆级教学)_热爱编程的申同学的博客-CSDN博客_阿里云镜像依赖

3、Maven仓库的分类

Maven仓库其实就是存放jar包的地方,通常我们称之为仓库。Maven仓库主要分为:远程仓库和本地仓库两大类。

3.1、本地仓库

Maven会将工程中依赖的Jar包从远程下载到本机一个目录下管理.

每个电脑默认的仓库是在 ${user.home}/.m2/repository下,一般我们不使用默认的仓库,需要自己设置仓库目录。

注意:在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建

3.2、远程仓库

中央仓库

Maven内置了远程公用仓库:http://repo1.maven.org/maven2 这个公共仓库是由Maven自己维护,里面有大量的常用  类库,并包含了世界上大部分流行的开源项目构件。目前是以java为主工程依赖的jar包如果本地仓库没有,默认从中央仓库下载

中央仓库的特点

1.中央仓库是由maven官方社区提供给大家使用的
2.不需要我们手动去配置,maven内部集成好了
3.使用中央仓库时,机器必须是联网状态,需要可以访问中央仓库的地址

第三方仓库  

中央仓库只有一个在国内访问中央仓库,使用非常慢,我们可以更换为:阿里云镜像

阿里云是将中央仓库的jar文件,进行克隆一份,存入在阿里云的服务器上,供我们国内的程序员使用。

3.3、私服仓库

私服也是远程仓库中的一种,我们为什么需要私服呢?

如果我们一个团队中有几百个人在开发一些项目,都是采用maven的方式来组织项目,那么我们每个人都需要从远程仓库中把需要依赖的构件下载到本地仓库,这对公司的网络要求也比较高,为了节省这个宽带和加快下载速度,我们在公司内部局域网内部可以架设一台服务器,这台服务器起到一个代理的作用,公司里面的所有开发者去访问这个服务器,这台服务器将需要的构建返回给我们,如果这台服务器中也没有我们需要的构建,那么这个代理服务器会去远程仓库中查找,然后将其先下载到代理服务器中,然后再返回给开发者本地的仓库。

注意:连接私服,需要单独配置。如果没有配置私服,默认不使用

私服的好处

1、加速maven的下载速度
2、节省宽带
3、方便部署自己的构件以供他人使用
4、提高maven的稳定性,中央仓库需要本机能够访问外网,而如果采用私服的方式,只需要本机可以访问内网私服就可以了

4、Maven构建工程

4.1、Maven构建Java工程

 

 

4.2、Maven构建JavaWeb工程

4.3、创建Java&resources目录

web项目创建完后,会发现没有 javaresources 两个目录

需要我们手动创建,并标注两个目录

4.4、打包方式

普通java工程打包方式:
    <packaging>jar</packaging>
普通JavaWEB工程打包方式:
    <packaging>war</packaging>
普通父工程打包方式: 
    <packaging>pom</packaging>

5、pom.xml管理

5.1、Maven坐标和依赖

想要用哪个jar包,通过坐标方式进行依赖引入

5.2、添加依赖包

要导入jar,首先要得到其坐标,那么怎么得到坐标?

maven的搜索仓库: http://mvnrepository.com/

注意:如果本地仓库没有相应版本的jar,会自动到中央仓库去找,然后自动下载,并缓存到本地。下次再使用jar包,就直接在本地中查找了

5.3、依赖范围

compile编译需要,打包需要 (大多数的jar都是这种)-默认值
provided编译需要,不会被打包 (servlet、jsp)
runtime编译不需要,打包运行时需要(jdbc驱动)
test参与测试,不会打包 (junit)
<!--servlet依赖-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

  <!--jsp的依赖包-->
  <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
  </dependency>

<!--mysql驱动包-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.16</version>
    <scope>runtime</scope>
</dependency>

<!--junit依赖-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
</dependency>

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值