Maven简述以及配置使用
目前的技术存在的问题(引入Maven的重要性)
一个项目就是一个工程;
如果项目非常庞大,就不再适合使用package来划分模块;最好是每一个模块对应一个工程,利于分工协作;
借助于Maven可以将一个项目拆分成多个工程;
项目中的jar包需要导入到WEB-INNF/lib目录下;
带来的问题:同样的jar重复的出现在不同的项目中,一方面浪费存储空间,工程也会臃肿;
借助Maven,可以将jar包仅仅保存在仓库中,有需要的工程引入这个文件接口,并不需要真的把jar包引入过来;
jar包需要别人替我们准备好,或者到官网下载;
不同技术的官网提供jar包的方式不同;
语言问题;
有些技术的官网直接通过Maven或者 来提供jar包;
非正规方式下载的jar包,其中的内容很可能不规范;
借助于Maven可以以一种规范的方式下载jar包,因为所有知名的框架或者第三方的jar包已经按照统一的规范放在了Maven的仓库中,因此jar包也是可靠的;
一个jar包依赖的其他jar包需要自己手动导入 ;
如果所有jar包之间的依赖关系都需要程序员了解,那么会极大的增加学习成本;
Maven会自动的将被依赖的jar包导入进来;
“统一的规范”非常重要;
Maven的概念
Maven是一款服务于Java平台的自动化构建工具;
Make→Ant→Maven→Gradle
构建
概念:以java源文件、框架的配置文件、JSP、HTML、CSS、JS、图片等资源为原材料的,去生产一个可以运行的项目的过程;
生产
部署
搭建
编译:Java源文件[User.java]→编译→Class字节码文件[User.class]→交给JVM执行 ;
部署:一个BS项目最终运行的并不是动态Web工程本身,而是这个动态Web工程编译的结果;
运行时环境:是一组jar包的引用,不是jar包本身复制到工程中;
构建中的各个环节
清理:将以前编译得到的旧的字节码文件删除,为下一次编译做准备
编译:将Java源程序编译成Class字节码文件
测试:自动测试,自动调用junit程序
报告:测试程序执行的结果
打包:动态Web工程打war包,Java工程打jar包
安装:Maven特定的概念,是将打包得到的文件复制到仓库中的指定位置
部署:将动态Web工程生成的war包复制到Servlet容器的指定目录下,使其可以运行
自动化构建
安装Maven核心程序
检查JAVA_HOME环境变量
解压Maven核心程序压缩包,放在一个非中文、无空格的路径下;
配置Maven的环境变量
推荐配置Maven_HOME或M2_HOME(推荐)
配置PATH
验证:运行mvn-v命令查看Maven的版本
Maven的核心概念
约定的目录结构
POM
坐标
依赖
仓库
生命周期/插件/目标
继承
聚合
第一个Maven工程
创建约定的目录结构
根目录:工程名
sec:源码
pom.xml:Maven工程的核心配置文件
main目录:存放主程序
java目录:java源文件
resources目录:存放框架配置文件或者其他工具的配置文件
test目录:存放测试程序
java目录:java源文件
resources目录:存放框架配置文件或者其他工具的配置文件
为什么用规定的目录结构?
Maven要负责项目的自动化构建,以编译为例,Maven要想自动编译,它必须知道Java源文件保存在哪里;
自定义的内容使得框架或工具知道,必须使用规定的目录表结构或者以配置的方式明确告诉框架(工具);
约定>配置>编码;
常用Maven命令
注意:执行与构建过程相关的Maven命令,必须进入pom.xml所在的目录.
与构建过程相关:编译、测试、打包、......
常用命令
mvn clean:清理
mvn compile:编译主程序
mvn test-compile:编译测试程序
mvn test:执行测试
mvn package:打包
mvn instal:安装
mvn site:生成站点
联网问题
Maven的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须由特定的插件来完成。而插件本身并不包含在Maven的核心流量中;
当我们执行的Maven命令需要用到某些插件时,会首先在本地仓库查找;
本地仓库的默认位置:[系统中当前的用户的家目录]\:m2\respsitory;
Maven核心程序在本地仓库找不到需要的插件,那么会自动连接外网,到中央仓库下载;
此时无法连接外网,则构建失败;
修改默认本地仓库的位置可以让Maven在事先准备好的仓库中查找插件;
找到Maven解压目录下的\conf\settings.xml
在文件中找到<localRepository>标签,修改为准备好的路径即可;
POM
含义:Project Object Model(项目对象模型)
DOM:Document Object Model 文档对象模型
pom.xml对于Maven工程是最核心配置文件,与构建相关的一切设置都在这个文件中进行配置,重要程度相当于web工程中的 web.xml
坐标
数学中的坐标:
在平面中使用X、Y两个量可以定位平面中的任何一个点;
在空间中使用X、Y两个量可以定位空间中的任何一个点;
Maven中的坐标
使用三个值来定义仓库中的一个Maven工程:
groupid:公司或者组织域名倒序+项目名
<groupid>com.shang.maven</groupid> |
artifactid:模块名
<artifactid>hello</artifactid> |
version:版本
<version>1.0.0</version> |
坐标与仓库中路径的对应关系
路径为:groupid/artifactid/version/artifactid-version.jar,其中groupid中的.要变成/
仓库
仓库的分类
本地仓库:当前电脑上部署的仓库目录,为当前电脑所有的指定Maven工程服务;
远程仓库
局域网(私服):搭建在局域网环境中,为局域网范围内的所有Maven工程服务;
中央仓库:为架设在Internet上,为世界上所有的Maven项目工程服务;
中央仓库镜像:为了分担中央仓库的流量,提升用户访问的速度,也可以减轻负担;
仓库中保存的内容:Maven工程
Maven自身所需要的插件
第三方框架或工具的jar包
自己开发的Maven工程
依赖
Maven解析依赖信息时会在本地仓库寻找被依赖的jar包
对于自己开发的Maven工程,使用install
命令安装后就可以进入仓库。
mvn install
依赖的范围<scope>
compile
对主程序是否有效:√
对测试程序是否有效:√
是否参与打包:√
test
对主程序是否有效:×
对测试程序是否有效:√
是否参与打包:×
典型的例子:
provided
对主程序有效
对测试程序有效
不参与打包,因此也不参与部署
典型的例子:Servlet-api.jar
生命周期
各个构建环节执行的顺序:不能打乱顺序,必须按照既定的正确顺序来执行;
Maven的核心程序中定义了抽象的生命周期,生命周期中各个阶段的任务是由插件来完成的;
Maven核心程序为了更好的实现自动化构建,按照这一特点执行生命周期中的各个阶段:不管执行生命周期的哪一个阶段,都在此生命周期的第一个阶段开始;
插件和目标
生命周期的各个阶段仅仅定义了要执行的任务是什么;
各个阶段和插件的目标是对应的;
相似的目标由特定的插件来完成;
目标可以看做是调用插件功能的命令
在eclipse中使用Maven
Maven插件:Eclipse内置
Maven插件的设置
installations:指定Maven核心程序的位置。不建议使用插件自带的Maven程序而应该使用自己解压的程序;
user-settings:指定conf/settings.xml的位置,从而获取本地仓库的位置;
基本操作
创建Maven版的Java工程:勾选图中项目
Maven简述以及配置使用相关推荐
- Maven安装与配置(最实用!!!)eclipse中配置maven
Maven安装与配置 一.需要准备的东西 JDK Eclipse(本章主要是在eclipse中进行配置maven) Maven程序包 二.下载与安装 1. 前往maven下载最新版的Maven程序: ...
- Maven详解(二)------ Maven的安装配置
2019独角兽企业重金招聘Python工程师标准>>> 目录 1.下载 Maven 2.配置 Maven 环境变量 3.查看 Maven 环境变量是否配置成功 4.在 eclipse ...
- 架构实战项目心得(三):JAVA和MAVEN的环境配置
1 java环境配置: 1 下载并安装jdk1.8 2 配置java环境变量: vi /etc/profile,在文件底部增加以下内容: export JAVA_HOME=/data/program/ ...
- Maven安装、配置、项目创建、编译等相关操作
Maven安装及配置 1.下载maven压缩包,解压到相应目录 下载链接 https://maven.apache.org/download.cgi 2.建立本地仓库文件夹repository 3.修 ...
- Maven环境变量配置以及修改阿里云镜像
Maven环境变量配置 首先到官网下载maven http://maven.apache.org/download.cgi 下载后解压,记住目录. 我的电脑>>>属性>> ...
- Idea+Maven+Jersey2+Tomcat配置Web服务
Idea+Maven+Jersey2+Tomcat配置Web服务 关于在Idea中使用Maven来管理配置Jersey2服务的文章有很多,本文主要总结自己踩过的一些坑,希望对大家有所帮助. 基本环境配 ...
- Maven笔记——maven下载与配置
(一)Maven简介 Apache Maven是一个项目管理和构建的工具,它基于项目对象模型(POM)的概念.通过一小段描述信息来管理项目的构建,报告和文档.○ 项目对象模型○ 依赖管理模型○ 插件• ...
- 用idea建立jsp项目_用idea创建maven项目,配置tomcat详解
用idea创建maven项目,配置tomcat详解,电脑上得有jdk1.7,或者1.8,然后就是maven3.x吧,再有就是tomcat7以上 下面就直接开始看图啦: 这个我刚刚开始没注意细看,原来w ...
- SpringCloud入门之Maven系统安装及配置
一.Maven 介绍 这个单词中文翻译为"专家"或"内行".下面将向你介绍 Maven这一跨平台的项目管理工具.作为 Apache 组织中的一个成功的开源项目, ...
最新文章
- Springboot 原理篇(一)
- java 传 复合类型对象_struts复合类型传值(对象传值)
- 【Socket网络编程】4.tcp和udp的客户端和服务端收发流程
- 【图像分割应用】医学图像分割(二)——心脏分割
- svm中支持向量的理解
- 《大数据分析原理与实践》——习题
- [存档]Div+Css布局中经常使用的小技巧合集
- html 改变文本框字体颜色,CSS更改文本框的字体颜色
- Hive自定义函数入门实例
- Centos7 卸载自带的OpenJDK
- Message Authentication Code
- 基础篇:6.6)形位公差-基准 Datum
- 海词词典android v3.1.2新版发布 英语学习必备工具,海词词典Android V3.1.2新版发布 英语学习必备工具...
- Android network基础知识 — IPv4和IPv6的区别
- 直播间卡人气小秘诀,快速增加直播间人气
- Sql Server数据库的作用与概述
- IntelliJ IDEA 之 设置项目编码
- linux c设置打印机属性,如何恢复打印机属性的“功能”部分
- 2019-12-17 摘抄: HPET 硬件高精度时钟源Linux内核引导选项
- 原型和原型链和instanceof
热门文章
- LeetCode 929. 独特的电子邮件地址
- LeetCode 986. 区间列表的交集
- c语言分治算法求最大值,分治法找最大值(C語言)
- vue做混合式app_Vue+原生App混合开发手记#1
- ad批量走线_AD PCB直角布线批量改为圆角,怎么批量修改呢?
- PyTorch数据Pipeline标准化代码模板
- 2020年,中国AI创业公司将走向何方
- 开源:Swagger Butler 1.1.0发布,利用ZuulRoute信息简化配置内容
- Spring Cloud Config的配置中心获取不到最新配置信息的问题
- 论文浅尝 | Learning with Noise: Supervised Relation Extraction