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. ...
随机推荐
- Oracle启动中,startup nomount、 startup mount 有什么差别?
Oracle启动中,startup nomount. startup mount 有什么差别? 解答: startup nomount:启动实例,读取参数文件,分配内存空间,启动后台进程,打开跟踪文件 ...
- 【BZOJ】3296: [USACO2011 Open] Learning Languages(tarjan)
http://www.lydsy.com/JudgeOnline/problem.php?id=3296 显然,每群能交流的群是个强联通块 然后求出scc的数量,答案就是scc-1 #include ...
- Sublime Text 加入右键菜单
Sublime Text 2 是现在很受大家欢迎的编辑器了,不仅是在web前端,在书定简单的php.Js等代码时,也是相当的好用,再配合多种的插件和新颖的界面,更是让人欲罢不能. 在使用时,我们通过喜 ...
- 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 (转)
x-ua-compatible 用来指定IE浏览器解析编译页面的model x-ua-compatible 头标签大小写不敏感,必须用在 head 中,必须在除 title 外的其他 meta 之前使 ...
- 【python】pyqt练习
import sys from PyQt4.QtCore import * from PyQt4.QtGui import * import ui_price class PriceDlg(QDial ...
- 将socket5代理转换为http代理
归根结底还是万恶的ZFW,MD弄得现在Google,gmail,dropbox都用不了了,看来这是要万民欢迎大中华局域网的到来了.最近在使用一同学的Shadowsocks来突破GFW的限制,可是电脑o ...
- 组合使用QT的资源管理高级功能简化开发过程
使用 QT 进行团队开发的时候,常常碰到一个问题,就是如何共同管理资源?甚至一个人进行开发的时候如何简化资源的维护,避免无谓的消耗? 如果可以做到在开发的时候,大家把美工做的图片(往往是程序员先自己随 ...
- c++ new(不断跟新)
1.基础知识 /* 可以定义大小是0的数组,但不能引用,因为没有指向任何对象 new string[10]调用类的默认构造函数 new int[10]没有初始化,但new int[10]()会将数组初 ...
- mysql5.7的密码
[root@mysql ~]# grep "temporary password" /var/log/mysqld.log 2018-04-03T08:08:05.867624Z ...
- 【BZOJ2259】[Oibh]新型计算机 最短路
[BZOJ2259][Oibh]新型计算机 Description Tim正在摆弄着他设计的“计算机”,他认为这台计算机原理很独特,因此利用它可以解决许多难题. 但是,有一个难题他却解决不了,是这台计 ...