学Maven,看这一篇就够了!(视频|资料,建议收藏!)
软件是一个工程
我们在日常生活常能听到工程这个词,像桥梁工程、道路工程、南水北调工程等等。
工程说简单点就是各个行业的从业人员通过总结规律或者方法,以最短的时间和人力、物力来做出高效可靠的东西。我们也就能理解桥梁工程,其实就是人们通过经验的总结和各种研究得出来的、用来修建桥梁时所采用的高效的方法,当然这种方法是可复用的。我们将这种作工程的思想应用到软件上,于是就产生了—软件工程。
软件工程:为了能够实现软件的流水线式生产,在设计和构建软件时能够有一种规范和工程化的方法,人们便提出了软件工程概念。
Maven是Apache软件基金会组织维护的一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理。Maven这个单词的本意是:专家,内行,读音是['meɪv(ə)n]或['mevn]。
Maven 是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有重要作用,Maven 是一款在大型项目开发过程中不可或缺的重要工具,Maven通过一小段描述信息可以整合多个项目之间的引用关系,提供规范的管理各个常用jar包及其各个版本,并且可以自动下载和引入项目中。
本课程详细介绍了Maven的高级操作:继承、聚合、多模块项目管理等方面的内容方方面面,是一线开发必不可少的内容
在线观看:https://www.bilibili.com/video/BV1dp4y1Q7Hf
资料下载: Maven视频教程全套免费下载【适合菜鸟入门】 - 动力节点 (bjpowernode.com)
上面的内容做个日常生活的类比,做道菜就是一个工程。今天心情好,想吃红烧肉,自动动手做:
想买什么猪的那个位置的肉,黑猪肉,土猪肉等,使用冰糖还是绵白糖,用什么牌子的酱油等
到菜市场购买各种原料。
准备材料,洗肉,切块,花椒,大料等
开始做了,肉下锅炖煮,不同时间加入花椒,大料,冰糖,酱油
炖煮一段时间后,看肉是否熟透,尝试口味,是不是咸了等等
做好了,开始吃了
需要刷碗,倒垃圾
这些工作从头做到尾步骤非常繁琐,每个步骤都是费时费力的。所以才出现净菜,半成品菜,拿回家直接做可以了,只做 6,7 步骤就可以 。
软件开发需要编译代码—>开发人员自己测试代码—>把代码打包—>部署项目到测试服务器—>测试人员测试功能—>测试测试出bug
开发人员需要修改bug—>开发人员自己测试代码—>把代码打包—>部署项目到测试服务器—>测试人员测试功能—>直到符合功能要求。
上述过程需要重复多次,大型项目中构建项目比较复杂,有很多的配置文件,jar 文件,多个子项目等等。都用人力完成费时费力,效率比较低。maven 可以让我们从上面的工作中解脱出来。
Maven 是自动化构建工具。
传统项目开发存在的问题
一个项目做成一个工程,造成工程比较庞大,需要使用多模块来划分项目;
项目中需要的数量众多的jar 包,需要手动下载并引入,并且多个项目需要的jar 包存在重复的问题;
项目中需要的jar 包有版本兼容的问题,需要手动解决; 项目中需要的jar 包又依赖其它的jar 包,需要手动解决。
Maven 概述
Maven 是Apache 软件基金会组织维护的一款自动化构建工具,专注服务于Java 平台的项目构建和依赖管理。Maven 这个单词的本意是:专家,内行。读音是['meɪv(ə)n]或['mevn]。
Maven 是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有重要作用,Maven 是一款在大型项目开发过程中不可或缺的重要工具。
Maven 可以整合多个项目之间的引用关系,我们可以根据业务和分层需要任意拆分一个项目;
Maven 提供规范的管理各个常用jar 包及其各个版本,并且可以自动下载和引入项目中;
Maven 可以根据指定版本自动解决jar 包版本兼容问题; Maven 可以把jar包所依赖的其它jar 包自动下载并引入项目。
类似自动化构建工具还有:Ant, Maven, Gradle。
构建(build),是面向过程的(从开始到结尾的多个步骤),涉及到多个环节的协同工作。
构建过程的几个主要环节
①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将Java源程序编译为字节码文件。
③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④报告:在每一次测试后以标准的格式记录和展示测试结果。
⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar 包,Web工程对应war包。
⑥安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。
⑦部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行
Maven 核心概念
Maven能够实现自动化构建是和它的内部原理分不开的,这里我们从Maven的九个核心概念入手,看看Maven是如何实现自动化构建的?
①POM
②约定的目录结构
③坐标
④依赖管理
⑤仓库管理
⑥生命周期
⑦插件和目标
⑧继承
⑨聚合
Maven特点
那么,Maven 和 Ant 有什么不同呢?
在回答这个问题以前,首先要强调一点:Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和 Ant代表两个差异很大的工具。所以接下来只说明这两个工具的等同组件之间的区别,如表 1 所示。
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。
安装 Maven 环境
1、确保安装了java 环境:maven 本身就是java 写的,所以要求必须安装JDK。
查看java 环境变量:echo %JAVA_HOME%
2、下载并解压maven 安装程序:
maven.apache.org/download.cg…
3、配置 Maven 的环境变量:
MAVEN_HOME=d:/apache-maven-3.3.9 或 者M2_HOME=d:/apache-maven-3.3.9 path=%MAVEN_HOME%/bin; 或者%M2_HOME%/bin;
4、验证是否安装成功: mvn –v
Maven 的核心概念
Maven 工程约定目录结构
maven 中约定的目录结构:
Hello
|---src
|---|---main
|---|---|---java
|---|---|---resources
|---|---test
|---|---|---java
|---|---|---resources
|---pom.xml
说明:
- Hello:根目录,也就是工程名
- src:源代码
- main:主程序
- java:主程序的java 源码
- resources:主程序的配置文件
- test:测试程序
- java:测试程序的java 源码
- resources:测试程序的配置文件
- pom.xml:Maven工程的核心配置文件。
一般情况下,我们习惯上采取的措施是:约定>配置>编码
maven 的pom.xml 记录的关于构建项目的各个方面的设置,maven 从pom.xml 文件开始,按照助约定的工程目录编译,测试,打包,部署,发布项目。
第一个maven 工程
按照如下步骤,实现第一个maven 项目,以 maven 推荐的约定方式创建目录,类文件。
某个目录中创建文件夹Hello
在Hello 中创建子目录 src
拷贝pom.xml 到Hello 目录和src 是同级放置的。
进入src 目录,创建main, test 目录
进入main 目录,创建 java,resources 目录。
进入java 目录,创建目录 com/bjpowernode/
在 com/bjpowernode/目录下创建 HelloMaven.java 文件,定义 int addNumber(int n1,n2){ return n1+n2};
定义public static void main(String args[]) { System.out.prinltn(“Hello Manven”); //也可以调用 addNumber()方法 }
进入到Hello 目录在,执行 mvn compile
进入到target/classes 目录执行 java
com.bjpowernode.HelloMaven
pom 文件
即Project Object Model 项目对象模型。Maven 把一个项目的结构和内容抽象成一个模型,在xml 文件中进行声明,以方便进行构建和描述, pom.xml 是 Maven 的灵魂。所以,maven 环境搭建好之后,所有的学习和操作都是关于pom.xml 的。
pom.xml 初识:
学Maven,看这一篇就够了!(视频|资料,建议收藏!)相关推荐
- 23上教资开始注册!详细报名流程看这一篇就够了!(建议收藏)
注意!2023年1月12日部分省份如:河北.上海.浙江.湖北.湖南.海南.云南.四川.重庆已经可以注册教资笔试了!注册网址:中国教育考试网,选择对应省份进入即可查看是否可以注册! 提示:注册未开启的将 ...
- 学Python看这一篇就够了!!!
新手小白学Python在还没有人带的情况下很容易半途而废,Python的学习.开发经验会遇到一些问题,大家首先得正视这些问题,然后想办法解决. ① 没有全面的学习步骤: ② 资料不完整,缺乏实战: ③ ...
- 学python看这一篇就够了
文章目录 一.python基础 常见数据类型: 1.字符串类型 2.数字类型 3.List列表类型 用[]定义 可变 4. tuple 元组 用()定义 不可变 5.Dict字典 用{}定义 6.se ...
- python装饰器功能是冒泡排序怎么做_传说中Python最难理解的点|看这完篇就够了(装饰器)...
https://mp.weixin.qq.com/s/B6pEZLrayqzJfMtLqiAfpQ 1.什么是装饰器 网上有人是这么评价装饰器的,我觉得写的很有趣,比喻的很形象 每个人都有的内裤主要是 ...
- docker 删除所有镜像_关于 Docker 镜像的操作,看完这篇就够啦 !(下)| 文末福利...
紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...
- mysql ip比较大小_MySQL优化/面试,看这一篇就够了
原文链接:http://www.zhenganwen.top/articles/2018/12/25/1565048860202.html 作者:Anwen~ 链接:https://www.nowco ...
- 深度好文:云网络丢包故障定位,看这一篇就够了~
深度好文:云网络丢包故障定位,看这一篇就够了~ https://mp.weixin.qq.com/s/-Q1AkxUr9xzGKwUMV-FQhQ Alex 高效运维 今天 来源:本文经授权转自公众号 ...
- 代理后台中间件_Golang Gin 实战(十三)| 中间件详解看这一篇就够了
6000字大章带你死磕Golang Gin中间件 在Gin的整个实现中,中间件可谓是Gin的精髓.一个个中间件组成一条中间件链,对HTTP Request请求进行拦截处理,实现了代码的解耦和分离,并且 ...
- 计算机二级excel高级筛选,Excel高级筛选,看这一篇就够了!
原标题:Excel高级筛选,看这一篇就够了! Excel高级筛选,看这一篇就够了 Excel中的自动筛选很多人都会用,但经常遇到多条件或复杂条件筛选时卡壳的窘境,其实强大的Excel早就为你准备了N多 ...
- Fortran保姆级教学——考试所有知识点看这一篇就够了
Fortran保姆级教学--考试所有知识点看这一篇就够了 临近期末本人复习的同时将整个fortran课堂知识整理了下来,希望学弟学妹们今后学这门课的时候不至于在csdn找不到系统的教程,也希望能帮到需 ...
最新文章
- mabatisplus怎么给实体类自定义属性_吊打面试官之:当实体类中的属性名和表中的字段名不一样 ,怎么办 ?...
- PHP测试使用postman发送post请求,却报错此接口不支持get请求的原因
- python与正则表达式(part5)--re模块使用
- 【计算机网络】TCP四次挥手
- 【Flink】Rowtime timestamp is null. Please make sure that a proper TimestampAssigner is defined and th
- MVC中的cshtml与ASPX的区别
- 多个值合并成一个字段oracle排序,Oracle之多行记录变一行记录,行变列,并排序(wmsys.wm_concat)...
- Camera电路、图像传感器问题汇总
- 论文解读|BMVC 2019 |Fast-SCNN Fast Semantic Segmentation Network
- 软件测试kpi绩效考核表,测试工程师绩效考核表.xls
- 报错:array_column函数未定义(原因:php版本问题)
- 【网页设计】31:文本声明
- ThingJS:如何一键生成3D城市地图
- 2021“设计+”珠宝首饰创新设计论坛
- 计算机科学领域外文期刊影响因子排行,2020最新SCI影响因子出炉,中国期刊Top100榜单公布,附最全EXCEL完整版目录!...
- Ubuntu 之 Audacity踩坑之旅
- Talk预告 | 微软亚洲研究院王希廷:基于逻辑规则推理的深度自可解释模型
- java neo4j rest api_Neo4j REST API使用实例—ttlsa教程系列之neo4j(二)
- 读书笔记《进化的力量:刘润年度演讲1》
- mybatis java类注解式_mybatis注解详解
热门文章
- php 499状态如何处理,HTTP499状态码 nginx下499错误及其解决方法
- 输入关键字生成对联_百度“智能春联”玩出新年味 输入关键词秒出春联
- 怎么获取股票历史数据?获取股票历史数据Excel
- 华为计算机主板,华为鲲鹏920台式机主板亮相:性能配置都亮眼
- 从新一期技术雷达看技术领域最新趋势
- K.dot和K.batch_dot
- 关于unity3d多点触控的研究
- 作业管理系统设计报告_Struts2_设计报告
- 凯德中国 × 阿里云 × 奇点云 | 沉淀数据资产,遇见数智未来
- 浅谈localhost