Maven简述以及配置使用

  1. 目前的技术存在的问题(引入Maven的重要性)

    1. 一个项目就是一个工程;

      • 如果项目非常庞大,就不再适合使用package来划分模块;最好是每一个模块对应一个工程,利于分工协作;

      • 借助于Maven可以将一个项目拆分成多个工程;

    2. 项目中的jar包需要导入到WEB-INNF/lib目录下;

      • 带来的问题:同样的jar重复的出现在不同的项目中,一方面浪费存储空间,工程也会臃肿;

      • 借助Maven,可以将jar包仅仅保存在仓库中,有需要的工程引入这个文件接口,并不需要真的把jar包引入过来;

    3. jar包需要别人替我们准备好,或者到官网下载;

      • 不同技术的官网提供jar包的方式不同;

      • 语言问题;

      • 有些技术的官网直接通过Maven或者 来提供jar包;

      • 非正规方式下载的jar包,其中的内容很可能不规范;

      • 借助于Maven可以以一种规范的方式下载jar包,因为所有知名的框架或者第三方的jar包已经按照统一的规范放在了Maven的仓库中,因此jar包也是可靠的;

    4. 一个jar包依赖的其他jar包需要自己手动导入 ;

      • 如果所有jar包之间的依赖关系都需要程序员了解,那么会极大的增加学习成本;

      • Maven会自动的将被依赖的jar包导入进来;

“统一的规范”非常重要;

 

Maven的概念

  1. Maven是一款服务于Java平台的自动化构建工具;

    • Make→Ant→Maven→Gradle

  2. 构建

    • 概念:以java源文件框架的配置文件JSPHTMLCSSJS图片等资源为原材料的,去生产一个可以运行的项目的过程;

      • 生产

      • 部署

      • 搭建

    • 编译:Java源文件[User.java]→编译→Class字节码文件[User.class]→交给JVM执行 ;

    • 部署:一个BS项目最终运行的并不是动态Web工程本身,而是这个动态Web工程编译的结果

运行时环境:是一组jar包的引用,不是jar包本身复制到工程中;

  1. 构建中的各个环节

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

    2. 编译:将Java源程序编译成Class字节码文件

    3. 测试:自动测试,自动调用junit程序

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

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

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

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

  2. 自动化构建

安装Maven核心程序

  1. 检查JAVA_HOME环境变量

  2. 解压Maven核心程序压缩包,放在一个非中文、无空格的路径下;

  3. 配置Maven的环境变量

    • 推荐配置Maven_HOME或M2_HOME(推荐)

    • 配置PATH

    • 验证:运行mvn-v命令查看Maven的版本

 

Maven的核心概念

  1. 约定的目录结构

  2. POM

  3. 坐标

  4. 依赖

  5. 仓库

  6. 生命周期/插件/目标

  7. 继承

  8. 聚合

第一个Maven工程

  1. 创建约定的目录结构

    • 根目录:工程名

    • sec:源码

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

    • main目录:存放主程序

      • java目录:java源文件

      • resources目录:存放框架配置文件或者其他工具的配置文件

    • test目录:存放测试程序

      • java目录:java源文件

      • resources目录:存放框架配置文件或者其他工具的配置文件

  2. 为什么用规定的目录结构?

    • Maven要负责项目的自动化构建,以编译为例,Maven要想自动编译,它必须知道Java源文件保存在哪里;

    • 自定义的内容使得框架或工具知道,必须使用规定的目录表结构或者以配置的方式明确告诉框架(工具);

    • 约定>配置>编码;

常用Maven命令

  1. 注意:执行与构建过程相关的Maven命令,必须进入pom.xml所在的目录.

与构建过程相关:编译、测试、打包、......

  1. 常用命令

    • mvn clean:清理

    • mvn compile:编译主程序

    • mvn test-compile:编译测试程序

    • mvn test:执行测试

    • mvn package:打包

    • mvn instal:安装

    • mvn site:生成站点

联网问题

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

  2. 当我们执行的Maven命令需要用到某些插件时,会首先在本地仓库查找;

  3. 本地仓库的默认位置:[系统中当前的用户的家目录]\:m2\respsitory;

  4. Maven核心程序在本地仓库找不到需要的插件,那么会自动连接外网,到中央仓库下载;

  5. 此时无法连接外网,则构建失败;

  6. 修改默认本地仓库的位置可以让Maven在事先准备好的仓库中查找插件;

    • 找到Maven解压目录下的\conf\settings.xml

    • 在文件中找到<localRepository>标签,修改为准备好的路径即可;

POM

  1. 含义:Project Object Model(项目对象模型)

    • DOM:Document Object Model 文档对象模型

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

坐标

  1. 数学中的坐标:

    • 在平面中使用X、Y两个量可以定位平面中的任何一个点;

    • 在空间中使用X、Y两个量可以定位空间中的任何一个点;

  2. 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中的.要变成/

 

仓库

  1. 仓库的分类

    • 本地仓库:当前电脑上部署的仓库目录,为当前电脑所有的指定Maven工程服务;

    • 远程仓库

      • 局域网(私服):搭建在局域网环境中,为局域网范围内的所有Maven工程服务;

    • 中央仓库:为架设在Internet上,为世界上所有的Maven项目工程服务;

    • 中央仓库镜像:为了分担中央仓库的流量,提升用户访问的速度,也可以减轻负担;

  1. 仓库中保存的内容:Maven工程

    • Maven自身所需要的插件

    • 第三方框架或工具的jar包

    • 自己开发的Maven工程

依赖

  1. Maven解析依赖信息时会在本地仓库寻找被依赖的jar包

对于自己开发的Maven工程,使用install命令安装后就可以进入仓库。

mvn install

  1. 依赖的范围<scope>

    • compile

      • 对主程序是否有效:√

      • 对测试程序是否有效:√

      • 是否参与打包:√

    • test

      • 对主程序是否有效:×

      • 对测试程序是否有效:√

      • 是否参与打包:×

      • 典型的例子:

    • provided

      • 对主程序有效

      • 对测试程序有效

      • 不参与打包,因此也不参与部署

      • 典型的例子:Servlet-api.jar


生命周期

  1. 各个构建环节执行的顺序:不能打乱顺序,必须按照既定的正确顺序来执行;

  2. Maven的核心程序中定义了抽象的生命周期,生命周期中各个阶段的任务是由插件来完成的;

  3. Maven核心程序为了更好的实现自动化构建,按照这一特点执行生命周期中的各个阶段:不管执行生命周期的哪一个阶段,都在此生命周期的第一个阶段开始;

  4. 插件和目标

    • 生命周期的各个阶段仅仅定义了要执行的任务是什么;

    • 各个阶段和插件的目标是对应的;

    • 相似的目标由特定的插件来完成;

    • 目标可以看做是调用插件功能的命令

在eclipse中使用Maven

  1. Maven插件:Eclipse内置

  2. Maven插件的设置

    • installations:指定Maven核心程序的位置。不建议使用插件自带的Maven程序而应该使用自己解压的程序;

    • user-settings:指定conf/settings.xml的位置,从而获取本地仓库的位置;

  3. 基本操作

    • 创建Maven版的Java工程:勾选图中项目

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

依图科技终止上市审核:冲击科创板「AI第一股」失败

来源&#xff1a;机器之心AI 创业公司在国内市场 IPO 真就这么困难&#xff1f;7 月 2 日晚上交所消息&#xff0c;决定终止对依图科技首次公开发行存托凭证并在科创板上市的审核。依图的上市申请是于 2020 年 11 月 4 日被上交所依法受理的&#xff0c;其股票预计采用 CDR&…

神经网络-前向传播

前向传播神经网络搭建 1.tensorflow库搭建神经网络 参数&#xff1a;线上的权重W&#xff0c;用变量表示&#xff0c;随机给初值。相关介绍 tf.truncated_normal():去掉过大偏离点的正太分布tf.random_normal()正太分布tf.random_uniform():平均分布tf.zeros:全零数组&#x…

对汉诺塔递归算法的理解(图解,附完整代码实现)

前情提要&#xff1a; 首先说一下汉诺塔游戏的规则&#xff1a;如下图所示&#xff0c;有三个柱子A,B,C,我们要做的是把A柱的所有圆盘&#xff0c;全部转移到C柱上&#xff0c;转移时遵循的规则如下&#xff1a; 1、每次只能移动一个圆盘 2、所有的大圆盘必须在小圆盘的下面 过…

再会迪杰斯特拉(Dijkstra)

迪杰斯特拉算法 算法说明 迪杰斯特拉算法用来求解某一个起点到以其他所有点为终点的最短路径长度&#xff1b; 算法思路-贪心算法 以下图为例 指定一个节点(即起点&#xff09;&#xff0c;例如计算“A”到其他节点的最短路径&#xff1b;引入两个集合&#xff08;S,U&…

数字孪生等前沿技术,将如何解码未来交通?

来源&#xff1a;物联网智库目前&#xff0c;国内在交通领域的技术创新层出不穷&#xff0c;交通出行领域已经成为创新科技聚集和爆发的领域。众多新科技的出现&#xff0c;正在给我们描绘出一幅未来交通的蓝图。在面向未来的诸多关于智慧交通的前沿应用和解决方案中&#xff0…

神经网络-反向传播

反向传播 反向传播---->训练参数&#xff0c;在所有参数上使用梯度下降。使NN模型在训练数据上的损失函数最小。损失函数&#xff08;loss&#xff09;&#xff1a;预测值&#xff08;y&#xff09;与已知答案&#xff08;y_&#xff09;的差距。均方误差MSE&#xff1a;, …

第七章 二叉搜索树(b3)BST:删除

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/10247191.html

2021天梯赛题解

2021程序设计天梯赛在4月24日举办&#xff0c;本文是天梯赛的部分题解&#xff0c;有的问题在当时也没有得到满分&#xff0c;由于学校开启了天梯赛的重现比赛&#xff0c;再写一写。 注意&#xff1a;本文答案不是标准答案&#xff0c;每道题收获的分数写在了相应位置&#x…

python-scrapy爬虫框架

scrapy爬虫框架 1.Scrapy爬虫框架 scrapy 不是一个函数功能库&#xff0c;而是一个爬虫框架。scrapy爬虫框架&#xff1a; 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合。.简单说爬虫框架是一个半成品&#xff0c;能够帮助用户实现专业网络爬虫。scrapy爬虫框架共包含…

如何正确地运用人工智能模型?

来源&#xff1a;内容摘自《模型思维&#xff1a;简化世界的人工智能模型&#xff08;全彩&#xff09;》模型&#xff0c;是客观事物的简化表示&#xff01;历史上&#xff0c;每一个伟大模型的提出&#xff0c;都极大地推动了科学和社会的发展&#xff0c;比如历史上出现的3个…

讲解Linux数据库安装

学习了linux这门课之后&#xff0c;就开始实践过程了&#xff0c;这样比较记得牢固&#xff0c;学以致用。 有了基本的命令&#xff0c;就可以试着安装数据库了。 企业环境需要安装VMWare ESXi虚拟机&#xff0c;然后再在里面新建虚拟机。 镜像vmware-viclient-all-5.1.0-10641…

张钹院士:制约人工智能发展的最大困难是什么?

出品&#xff1a;新基建访谈采访&#xff1a;张楠整理&#xff1a;广胜脑科学被誉为自然科学研究的“终极疆域”&#xff0c;脑科学的发展不仅直接关系人类对于意识诞生机制的探索&#xff0c;也对推动当前 AI 技术发展具有重要意义。对于脑科学目前的发展现状、面临的难题、与…

《新一代城市大脑建设与发展》专家研讨会在京举办(新版)

&#xff08;这个新版本增加了三位专家的发言&#xff09;2021年6月26日&#xff0c;新一代城市大脑建设与发展专家研讨会在京举办&#xff0c;本次活动由城市大脑全球标准研究组主办&#xff0c;远望智库承办。6G 俱乐部提供了重要支持。20多位专家参与本次研讨会&#xff0c;…

排序算法-查找算法

排序算法 冒泡排序 从左向右扫描数据&#xff0c;选着最大的数据。要点&#xff1a;比较相邻的两个数&#xff0c;如果左边的数大于右边的数就进行交换。 template<class T> void BubbleSort(T *array, const int length) { for (int i 0; i <length-1; i) { fo…

当法律纽带变成“机器红线”,能让自动驾驶汽车更安全吗?

来源&#xff1a; 脑极体美国汽车协会(American Automobile Association, AAA)与哈佛大学的一项研究结果显示&#xff0c;高达77%的人表示担心自己与自动驾驶汽车共享道路的安全性&#xff0c;62%则担心自动驾驶汽车发生意外时的肇责归属。某种程度上来讲&#xff0c;这可以说是…

李联宁|量子计算机:技术路线、风险及战略投资

来源&#xff1a;《学术前沿》杂志2021年4月上&#xff08;微信有删节&#xff09;作者&#xff1a;西安交通大学城市学院教授 李联宁原文责编&#xff1a;桂琰新媒体责编&#xff1a;李思琪视觉&#xff1a;王洋图片来源&#xff1a;网络由于现有半导体微电子技术物理极限的原…

vs code 配置java

VS code 入门 Vs code 配置Java 首先到VS code官网下载VS code软件&#xff0c;打开界面如图&#xff1a; 下载安装好&#xff0c;打开界面如图(注下图已汉化)&#xff1a; 为了便于使用&#xff0c;我们先进行汉化&#xff0c;在最左边点击图1-1中的图标&#xff0c;出现如图…

四、HTTP控制器

1、控制器的作用&#xff1a;数据和视图之间的桥梁 2、控制器创建方法&#xff1a; &#xff08;1&#xff09;手动创建 <?php namespace App\Http\Controllers; class UserController extends Controller { public function showProfile($id) { return view(user.profile,…