maven基础部分

一.概述

1.层次以及所用技术

和浏览器相关:视图层,表示层,表现层{{

视图层(H5 CSS  JSP)

控制层(servlet/action(struct2)/Handler(spring mvc))

}

 

业务逻辑层{  Spring IOC AOP

}

 

持久化层(和数据库交互){  JDBC/DBUtils/Spring JDBCTemplate/Hibernate/Mybatis

}

 

 

 

数据库 { Oracle/MySQL

}

 

2.目前的技术在开发过程中存在的问题(Maven有什么用)

  • 一个项目就是一个工程

       如果一个项目什么庞大就不适合使用Pckage划分模块(以前的是一个功能模块是一个package,现在是把每一个功能模块看作是一个工程,在每一个工程中去开发每一个模块功能,有利于协同工作,现在利用Maven可以将一个项目拆分成多个工程)             

  • 项目中需要的jar包必须手动的“复制”、“粘贴”到WEB-INF/lib目录下

        带来的问题:同样的jar包重复出现在不同的项目工程中,一方面浪费存储空间,二是项目显得臃肿。借助Maven,可以将jar包仅仅保存在“仓库”中,有需要使用的工程,“引用”这个文件即可,并不需要真的需要将这个jar包复制过来。这样这个项目就很简洁。

类似于:

具体怎么引用:

        

  • jar包需要别人替我们准备好或者到官网下载

        如果没有Maven就得去官网下载,但是不同技术提供的jar包下载是五花八门的。并且有些技术的官网就是通过Maven

        或者SVN等专门的工具来提供下载。

        借助Maven可以以一种正规的方式下载Jar包,因为所有的知名矿建或第三方工具的jar包已经按照统一的规范存放在Maven的中央仓库中。

 

  • 一个jar包依赖的其他jar包需要自己手动加入到项目中

        FileUpload组件->(依赖)IO组件 例如:commons.fileupload1.3.jar依赖于commons-io-2.0.jar

依赖关系层次图:.

 

3.Maven是什么【what】

  • Maven是一款服务于Java平台的自动化构建工具()。

            发展史:   Make->Ant->Maven-Gradle

  • 构建:

  1. 概念:以Java源文件,框架配置文件,jsp,html,图片等资源为原材料,去生产一个可以运行的项目的过程

  2. 编译:Java源文件(user.java)->Class字节码文件(User.java)->交给JVM运行。

  3. 部署:一个动态B/项目最终不是动态Web工程本身,而是这个动态Web工程“编译的结果”。

             生的鸡—>处理---->熟的鸡->

             动态的Web工程->编译、部署->编译的结果

 

 

  • 构建过程中的各个环节

  1. 清理: 将以前编译得到的旧的class字节码文件删除,为下一次编译做准备

  2. 编译:将Java源程序编译成class字节码

  3. 测试:自动的测试,自动调用junit来进行测试

  4. 报告:测试程序执行的结果

  5. 打包:   动态Web工程打jar包,java工程打jar包

  6. 安装:Maven特定的概念--将打包得到的文件复制到“仓库”中的指定位置

  7. 部署:将动态Web工程生成的war包复制到Servlet容器的指定目录下,使其可以运          行                                          

4.Maven的核心概念

  • 约定的目录结构

  • POM

  • 坐标

  • 依赖(重要)

  • 仓库

  • 生命周期/插件/目标

  • 继承

  • 聚合

5.创建Maven工程

  • 创建约定的目录结构

  1.  根目录:工程名

  2. src目录:源码

  3. pom。xml:Maven工程的核心配置文件

  4. main文件:存放主程序

  5. test目录:存放测试程序 

  6. java目录:存放java源文件

  7. rescores目录:存放框架或其他工具的配置文件      

  • 为什么遵守预定的目录结构呢?

  1.  java要负责我们这个项目的自动化构建,以编译为例。maven要想自动进行编译,那么它必须知道Java的文件保存在哪里。

  2. 如果我么自定义的东西想让框架或工具知道,有两种办法:一是以配置的方式明确告诉框架或者工具,二是遵守框架内部已经存在的约定。(约定大于配置大于编码)

6.常用Maven命令

  • 注意:执行与构建过程相关的Maven命令(编译,测试,打包....),必须进入pom.xml所在的目录。

      1. mvn clean  清理

      2. mvn compile  编译主程序

      3. mvn  test-compile  编译测试

      4. mvn test 执行测试

      5. mvn package 打包

7.关于联网问题

  • Maven的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须由特定的插件来完成,而插件本身并不包含在Maven的核心程序中。

  • 当我们执行的Maven需要用到某些插件时,Maven核心程序会首先到本地仓库中查找。

  • 本地仓库默认位置:[系统中当前用户的家目录(用户/User)]\.m2\repository

  • Maven的核心程序如果在本地仓库没有找到需要的插件,那么它会自动的连接外网,到中央仓库下载。如果此时无法连接外网,则构建失败。还

  • 修改默认本地仓库的位置,可以让Maven核心程序到我们事先准备好的目录下查找插件。 

    1. 找到Maven的解压目录\conf\settings.xml文件

    2. 在settings.xml文件中找到ocalRepository标签

    3. 将<localRepository>/path/to\local/epo</localRepository>从注释中取出来

    4. 将标签体内容修改成已经准备好的Maven仓库路径

二、Maven中的POM

  1. 含义:Project Object Model   项目对象模型的缩写

  2. DOM:  Document Object Model    文档对象模型

  3. pom.xml对于Maven工程是核心配置文件,与构建过程相关的一切设置都在这个文件中进行。重要程度相当于web,xml对于动态Web工程。

三、Maven中的坐标(GAV)

  1. 数学中的坐标:在平面上使用x,y两个向量可以唯一定位平面中的任何一个点,在空间中使用x,y,z三个向量可以唯一的定位空间中的任何一个点。

  2. Maven中的坐标 ,使用以下三个向量在仓库中唯一定位一个Maven 的工程

  • groupid:公司或组织域名的倒序+项目名, 例如:<groupid>com.csh.maven<\groupid>

  • artifactid:模块名,例如:<artifactid>Hello<artifactid\>

  • version:版本        例如:<version>1.3<versioin\>

  • Maven工程中的坐标与仓库中路径的对应关系:

四、 Maven仓库

1.分类:(本地仓库(当前电脑上的),远程仓库(局域网范围的 :私服(Nexus))、中央仓库、中央仓库的镜像)

  • 远程仓库(私服):架设在当前局域网环境下,为当前局域网范围内的所有Maven工程服务。

  • 中央仓库:架设在Internet上,为全世界所以的Maven工程服务。

  • 中央仓库镜像:为了分担中央仓库的流量,提升用户的访问速度。

2.仓库中保存的内容:(内容定位参考GAV)

  •  Maven自身所需要的插件

  • 第三方框架或工具的jar包(第一方是JDK,第二方是开发人员)

  • 我们自己开发的Maven工程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值