一、Maven 介绍

  1、什么是 Maven

    Maven 是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在声明周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

  2、Maven 能解决什么问题

    (1)可以替我们管理 jar 包;

    (2)可以替我们编译文件;

    (3)可以执行单元测试;

    (4)可以让配置文件和代码实现分离,整合;

二、Maven 的两个经典作用

  1、Maven的依赖管理

    maven 的一个核心特性就是依赖管理,当设计到模块的项目(包含成百个模块或者子项目),管理依赖就变成一项困难的任务。Maven 展示出了它对处理这种情形的高度控制。

    maven 工程如何管理 jar 包的:

    分析如下:

  通过分析出现:maven 工程中不直接将 jar 包导入到工程中,而是通过在 pom.xml 文件中添加所需 jar 包的坐标,这样就很好的避免了 jar 直接引入进来,在需要用到 jar 包的时候,只要查找 pom.xml 文件 ,再通过 pom.xml 文件中的坐标,到一个专门用于 “存放 jar 包的仓库”中根据坐标从而找到这些 jar 包,再把这些 jar 包拿去运行。

  通过 pom.xml 文件配置要引入的 jar 包的坐标,再读取坐标并到仓库中加载 jar 包,这样我们就可以直接使用 jar 包了,为了解决这个过程中速度慢的问题, maven 中也有索引的概念,通过建立索引,可以大大提高加载 jar 包的速度,使得我们认为 jar 包基本跟放在本地的工程文件中再读取出来的速度是一样的。这个过程就好比我们查阅字典时,为了能够加快查找到内容,书前面的目录就好比是索引,有了这个目录我们就可以方便找到内容了,一样的在 maven 仓库中有了索引我们就可以认为可以快速找到 jar 包。

  2、项目的一键构建

    往常的项目,都要经历编译、测试、运行、打包、安装,部署等一些列过程。

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

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

    Maven 规范化构建流程如下:

    

三、Maven 的使用

  1、Maven的安装

    (1)Maven 的下载

       链接地址:Maven 下载

         

        点击 Download 链接,直接进入到 Maven 软件的下载页面。

       

         下载后的版本如下:

        

    (2)Maven 软件的安装

       Maven 下载后,将 Maven 解压到一个没有中文没有空格的路径下,比如 D:\software\maven 下面。
       解压后目录结构如下:

       

       bin:存放了 maven 的命令

        boot:存放了一些 maven本身的引导程序,如类加载器等

        conf:存放了一些 maven 的一些配置文件,如 setting.xml 文件

        lib:存放了 maven 本身运行所需的一些 jar 包

       注意:在使用 maven 软件前,保证电脑是上已经安装并配置好了 JDK。

    (3)JDK 的准备及统一

       JDK 环境:

       

    (4)Maven 及 JDK 配置

       电脑上安装 Java 环境,安装 JDK1.7+ 版本,将 JAVA_HOME/bin 配置环境变量 path。

      配置 MAVEN_HOME ,变量值就是 maven 安装的路径(bin 目录之前一级目录)

      

     (5)Maven 软件版本测试

     通过 mvn -v 命令检查 maven 是否按照成功,看到 maven 的版本即为安装成功。

     打开 cmd 命令,输入 mvn -v 命令,如下图:

     

  2、Maven 仓库 

    (1)Maven仓库的分类

        maven 的工作需要从仓库下载一些 jar 包,如下图所示,本地的项目 A、项目 B 等都会通过 maven软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。

       maven 仓库的类型

            

      本地仓库:用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找,默认本地仓库位置在 ${user.dir}/.m2/repository, ${user.dir}表示 windows 用户目录。
       远程仓库:  如果本地需要插件或者 jar 包,本地仓库没有, 默认去远程仓库下载。 远程仓库可以在互联网内也可以在局域网内。

       中央仓库:在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件。

    (2)Maven 本地仓库的配置

        在MAVE_HOME/conf/settings.xml 文件中配置本地仓库位置(maven 的安装目录下):

        

      打开 setting.xml 文件,配置如下:

      在 setting.xml 里面,如果使用默认的中央仓库,访问速度很慢,可以把中央仓库配置为阿里云仓库。

  <mirrors>
<!-- 阿里云maven中央仓库映像配置--> <mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror> </mirrors>

    (3)全局 setting 与用户 setting 

      maven 仓库地址、私服等配置信息需要在setting.xml 文件中配置,分为全局配置和用户配置。

      在 maven 安装目录下的有 conf/setting.xml 文件,此 setting.xml 文件用于 maven 的所有 project项目,它作为 maven 的全局配置。

      如需要个性配置则需要在用户配置中设置,用户配置的 setting.xml 文件默认的位置在: ${user.dir}/.m2/settings.xml 目录中,${user.dir} 指 windows 中的用户目录。

      maven 会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件。

      

  3、Maven 工程的认识

    (1)Maven 工程的目录结构

      

      作为一个 maven 工程,它的 src 目录和 pom.xml 是必备的。

       进入 src 目录后,发现它里面的目录结构如下:

      

       src/main/java —— 存放项目的 .java 文件

        src/main/resources —— 存放项目资源文件,如 spring,Hibernate 配置文件

        src/test/java —— 存放所有单元测试 .java 文件,如 JUnit 测试类

        src/test/resources —— 测试资源文件

        target —— 项目输出位置,编译后的 .class 文件会输出到此目录

        pom.xml —— maven 仙姑核心配置文件

        注意:如果是普通的 java 项目,那么就没有 webapp 目录。

    (2)Maven 工程的运行

       进入 maven 工程目录(当前目录有 pom.xml 文件),运行 tomcat:run 命令

      

    (3)问题处理

      如果本地仓库配置错误会报下边的错误

      

     分析:

       maven 工程运行先从本地仓库找 jar 包,本地仓库没有再从中央仓库找,上边提示 downloading…表示 从中央仓库下载 jar,由于本地没有联网,报错。

     解决:

      在 maven 安装目录的 conf/setting.xml 文件中配置本地仓库,参考:“maven 仓库/配置本地仓库章节”。

Java 之 Maven 基础的更多相关文章

  1. (一)Java工程化--Maven基础

    Maven 读作['mevən] 翻译成中文是"内行,专家" Maven是什么 包依赖的前世今生: 原始的jar包引用--> ant --> maven. 是一种项目管 ...

  2. Java+TestNG+Maven+Excel+IDEA接口自动化入门(一)环境配置

    前置: 1.本机环境安装了maven并配置环境变量 2.本机环境安装了IDEA软件 3.本机环境安装了Java jdk 8版本 4.有一定java和maven基础 因为以上网上例子很多,就不再重复赘述 ...

  3. Maven基础

    Maven基础 maven核心内容:依赖管理. Maven是Apache组织的开源项目,是项目构建工具.用来管理jar包之间的相互依赖关系 Maven是一个项目构建和管理的工具,提供了帮助管理,构建, ...

  4. Java Web系列:Java Web 项目基础

    1.Java Web 模块结构 JSP文件和AXPX文件类似,路径和URL一一对应,都会被动态编译为单独class.Java Web和ASP.NET的核心是分别是Servlet和IHttpHandle ...

  5. Java+selenium自动化测试基础

    Java+selenium maven配置 maven的配置,但还需要建立maven的本地库,修改apach-maven的setting.xml http://www.cnblogs.com/haoa ...

  6. Maven基础知识详解

    1. 简介   Maven在Java领域的应用已经非常广泛了,有了Maven的存在是的开发人员在搭建.依赖.扩展和打包项目上变得非常简单. 2. Windows安装Maven 下载安装包   http ...

  7. maven基础学习-为什么要用maven,帮助解决了什么问题,怎么解决的,希望以后学习每个知识点都可以这样问下自己

    maven基础学习 第1章 Maven介绍 1.1 什么是Maven 1.1.1 什么是Maven Maven 的正确发音是[ˈmevən],而不是"马瘟"以及其他什么瘟.Mave ...

  8. Maven——基础篇

    Maven--基础篇 Maven出现前的问题 一个项目就是一个工程,而工程内一般是通过package包来分模块,比较用户模块,订单模块等,如果项目过于庞大,通过包模块来划分就不太合适,而应该拆分为模块 ...

  9. Maven 基础标签之版本管理和冲突解决

    前言 我们在做java项目的时候由于jar包太多,我们就需要使用maven做项目管理,管理项目的jar包依赖,包括打包上线 maven基础 Maven 是一个项目管理工具,主要用于项目构建,依赖管理, ...

随机推荐

  1. 字符串反转(java和js)

    写在前面 关于字符串反转的奇技淫巧很多, 会一种就行了, 但是解锁更多姿势可谓艺多不压身啊~~ 正文 java https://www.cnblogs.com/binye-typing/p/92609 ...

  2. Zookeeper:Unable to read additional data from client sessionid 0x00, likely client has closed socket

    异常信息: 2018-03-20 23:34:01,887 [myid:99] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerC ...

  3. 面试突击(七)——JVM如何加载Java字节码信息的?

    声明:本文图片均来自网络,我只是进行了选择,利用一图胜千言的力量来帮助自己快速的回忆相关的知识点 1:先看一下Java类文件的转换过程,如下所示,Java字节码文件是通过类加载子系统来放入JVM的内存 ...

  4. Ubuntu宝塔面板设置网站 Apache Server API为Apache 2.0 Handler模式

    用过宝塔面板(https://www.bt.cn)的谁用谁知道:  以下来自官网的介绍: “宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据 ...

  5. systemctl start docker失败,提示start request repeated too quickly for docker.service

    情景说明 本来服务器docker服务运行的很好,但客户重启了服务器-于是服务有些问题,遂进入到服务器再次启动docker及服务.不料提示上面的错误-- 解决办法 尝试1 Google了一圈,发现说法很 ...

  6. Centos新服务器需要安装的必备软件包

    yum install -y gcc gcc-c++ kernel-devel yum install -y pcre pcre-devel yum install -y zlib zlib-deve ...

  7. apache httpd 从2.2升级到2.4的过程及中间遇到的坑

    背景描述: 最近集团在做安全扫描,扫出了http的漏洞,一看是监控nagios涉及到的httpd,于是就考虑将httpd升级到最新的版本,在升级的过程中,真是遇到了很多的坑,弄了2天终于搞定了,现在梳 ...

  8. 查找算法(2)--Binary chop--二分查找

    1. 二分查找 (1)说明 元素必须是有序的,如果是无序的则要先进行排序操作. (2)基本思想: 也称为是折半查找,属于有序查找算法.用给定值k先与中间结点的关键字比较,中间结点把线形表分成两个子表, ...

  9. fatal error: linux/videodev.h: No such file or directory

    Run Build Command:"/usr/bin/make" "cmTC_162a3/fast"/usr/bin/make -f CMakeFiles/c ...

  10. [译]在Python中,如何拆分字符串并保留分隔符?

    原文来源:https://stackoverflow.com/questions/2136556/in-python-how-do-i-split-a-string-and-keep-the-sepa ...