maven入门学习(一)
一、maven介绍
1.软件开发中我们为什么要使用maven呢?(纯属个人体会观点,如有错误,敬请指正)
(1)其一,企业岗位需求,目前的IT开发招聘岗位上,基本都要求会使用maven。
(2)其二,使用maven可以帮助我们解决软件开发中遇到的一些困难问题。我们先来看看项目开发中可能存在的一些问题。
1.1 jar包的依赖与管理 我们都知道,一个项目开发一般都依赖着许多的jar包。jar包的使用可能存在的问题如下:
问题一: 不能确定jar包的完全正确性(比如我们百度下载的jar包,不一定保证其正确性。要是不同的员工下载的jar包都是来自不同的网站,然后在项目中使用,如果没有确保jar包的安全性,如果在生产线上出问题了,将会造成不可估量的损失)
问题二: 不同技术框架版本的管理(如spring2.0、spring2.1、如果同一个公司不同的开发人员使用的jar包版本不一致,比如A使用spring1.0,而B使用spring2.0,导致jar包显得很臃肿,而且可能会产生其他的问题,这样子管理起来就很难)、
问题三: 不同jar包之间的相互依赖(spring2.0中存在的许多的jar包,jar包之间存在着相互依赖的关系,比如a包依赖b包,b又依赖c包,等。我们如何保证每次拷贝jar包的时候不会出现遗漏jar的情况,如果遗漏的jar包的拷贝,程序运行的时候时常就出现了这种ClassNotFoundException的错误等)
那么maven是如何解决jar包的依赖与管理呢?maven允许我们可以自己搭建一个jar仓库,项目中依赖的jar包直接在一个文件中定义声明,同时指定jar包所在的位置,当程序跑起来的时候依赖的jar包maven会帮助我们下载到本地上。这就好比我们程序一样,先定义变量,然后再使用。
1.2 自动构建项目 我们先来了解一下软件开发的过程。
一般软件开发的流程如下:
- 软件开发: 可行性分析--->需求分析--->软件设计--->软件开发--->发布--->运维
那么什么是自动构建项目呢?大体可以这么认为:
- 软件构建: 软件已经开发完毕,需要构建成一个产品进行发布,供用户使用。
我们都知道,在myeclipse上编写的java文件,myeclipse会自动帮助我们编译,然后由我们运行发布。
如果没有这个工具,那么我们应该怎么编译源程序呢。
一般项目构建步骤如下:
清除--> 编译-->测试-->报告-->打包(jar\war)-->安装-->部署到远程
myeclipse虽是一个集成开发工具,但是对上面的项目构建操作只是分开进行操作,而且有些操作并不能进行,比如报告等,需要开发人员自己写报告,这样子就不能达到我们开发效率的要求。
而通过maven的使用, 不仅解决了上面我们遇到的jar包的依赖与管理的问题,而且可以通过一个命令实现自动构建软件项目,到达我们需要的开发效率。当然我们就得学习使用了。
2.引入maven
1. maven介绍
- 介绍: Maven是一个采用纯Java编写的开源项目管理工具,Maven采用了一种被称之为Project Object Model (POM)概念来管理项目, 所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个生命周期,包括清除、编译,测试,报告、打包、部署等等。
- pom(项目对象模型)(如何理解pom呢)如下图所示:
我们可以这么理解pom: 比如项目A开发中,我们项目中存在许多的类1,类2....以及各种配置文件等,pom(项目对象模型)管理的不只是项目中的单一类,或者是项目的某个配置文件,而管理的是整个项目A,针对的是整个项目A。
那么什么是软件构建的生命周期呢?我们可以这么理解、
- 软件构建的生命周期
清除--> 编译-->测试-->报告-->打包(jar\war)-->安装-->部署到远程
2. maven 解决的问题
- jar包的声明式依赖管理与管理(图解其优势所在)
以前进行项目开发的时候,我们需要对jar包进行拷贝,经常从不同的项目中拷贝到新的项目。由此就可能产生一些新的问题。比如有些jar包,新项目并不依赖,而我们拷贝过来了,这就显得多余了。而如果我们只拷贝一部分,可能会出现jar包相互依赖导致类找不到的问题。而maven的出现解决了这些问题。maven对项目的结构进行了一些约束,规定项目的目录问题。每个maven项目中都有一个pom.xml文件,maven是通过pom.xml文件来定义项目所依赖的jar包的,我们项目中需要什么jar包就直接在pom.xml中进行定义,需要的时候帮助我们自动进行下载。比如我们可以搭建公司的私服服务器,里面存放了许多的不同版本的jar包。我们在pom.xml文件中定义依赖的jar包,当项目跑起来的时候,会自动到公司私服中寻找依赖的jar包并进行下载到本地,jar包如果存在依赖也会帮助我们进行其他的jar包下载;如果私服中找不到的话,就会自动到中心仓库寻找jar包,当然一般我们需要的jar包都会存在的。
maven入门学习(一)的更多相关文章
- Maven入门学习
1 Maven的安装 maven下载路径:http://maven.apache.org/download.cgi 我是在win7上安装了,安装后在cmd输入 mvn -v: C:\Users\*** ...
- Maven入门学习 (一)
学习Java 的同学就一定会学习Maven, 那么Maven为什么会得到大量用户的使用呢?它是用来干什么的呢 ?接下来就来介绍 Q:Maven的作用? (1)Maven可以自动化构建项目,可以从清理. ...
- Maven入门学习,安装及创建项目
一.maven介绍: 1.maven是一个基于项目对象模型(POM Project Object Model),通过配置文件管理项目的工具(项目管理工具). 2.maven主要功能:发布项目(从编译到 ...
- Maven学习专题--Maven入门及安装
因为项目需要,新项目需要使用Maven开发,但是组内大部分没有接触过maven.我就毅然承担搭建maven环境的任务了.因为一切重头开始,就想把自己的整个搭建环境.项目创建.框架整合和模块管理整个过程 ...
- dubbo入门学习笔记之入门demo(基于普通maven项目)
注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...
- Maven学习总结(1)——Maven入门
Maven学习总结(一)--Maven入门 一.Maven的基本概念 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的 ...
- Maven入门详解
什么是Maven Maven,鼎鼎大名,在今天之前,我对于它一直是处于一种"只闻其名不见其人"的状态.之所以说"只闻其名",是因为Maven太有名了,它是Apa ...
- Maven入门详解以及Eclisp的集成
1.首先要安装Maven到操作系统上 Maven的下载页面:http://maven.apache.org/download.html Maven跟Tomcat很像,下载下来后直接解压在指定的目录就安 ...
- Maven入门2-pom.xml文件与settings.xml文件
Maven入门2-pom.xml文件与settings.xml文件 本文内容来源于官网文档部分章节,settings.xml文件:参考http://maven.apache.org/settings. ...
随机推荐
- Crosses Puzzles zoj 4018 (zju校赛)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5746 题目大意: N*M的方格里,每个格子有一个指针,一开始指向上下左右四个方 ...
- ubuntu安装jdk详细教程
ubuntu14 安装jdk1.7 具体步骤参详了如下链接: http://www.cnblogs.com/plinx/archive/2013/06/01/3113106.html 1.到 Sun ...
- 关于OBJC
http://www.objc.io/ objc这个站点是:关于objective-c语言的最佳实践和高阶技术的期刊. 看了几期非常不错,所以计划每天抽出时间翻译一篇文章和大家一起分享.
- 复合文档(Compound Document)读写栗子
复合文件是把磁盘文件系统的管理方式移植到文件中---复合文件. 复合文档是由 Windows 系统通过 COM 提供的, 它能完成像 Windows 目录结构一样复杂的文件结构的存取:提示一下 Win ...
- hdu 4322(最大费用最大流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4322 思路:建图真的是太巧妙了!直接copy大牛的了: 由于只要得到糖就肯定有1个快乐度,在这一点上糖 ...
- Ubuntu 16.04 LTS sublime text 3 解决不能输入中文
sublime text 3 安装完成后不能输入中文,让人很是不爽.下面内容可以解决使用问题! 一.首先要注意几个问题. 1)sublime_imfix.c 文件放在home目录下面. 2)如果你在步 ...
- 解决 UIView 设置背景为UIImage图片变型问题[XXX setBackgroundColor:[UIColor colorWithPatternImage:XXX]];
[self.drawingViewsetBackgroundColor:[UIColorcolorWithPatternImage:[selfthumbnailWithImageWithoutScal ...
- 【BZOJ4317】Atm的树 动态树分治+二分+线段树
[BZOJ4317]Atm的树 Description Atm有一段时间在虐qtree的题目,于是,他满脑子都是tree,tree,tree…… 于是,一天晚上他梦到自己被关在了一个有根树中,每条路径 ...
- IntelliJ中的main函数和System.out.println()快捷输入方式
转自:https://blog.csdn.net/assassinsshadow/article/details/73557375 main快捷输入 psvm System.out.println() ...
- Python之实现简单计算器功能
一,需求分析 要求计算一串包含数字+-*/()的类似于3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4)表达式的数值 二,知识点 正 ...