一、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入门学习(一)的更多相关文章

  1. Maven入门学习

    1 Maven的安装 maven下载路径:http://maven.apache.org/download.cgi 我是在win7上安装了,安装后在cmd输入 mvn -v: C:\Users\*** ...

  2. Maven入门学习 (一)

    学习Java 的同学就一定会学习Maven, 那么Maven为什么会得到大量用户的使用呢?它是用来干什么的呢 ?接下来就来介绍 Q:Maven的作用? (1)Maven可以自动化构建项目,可以从清理. ...

  3. Maven入门学习,安装及创建项目

    一.maven介绍: 1.maven是一个基于项目对象模型(POM Project Object Model),通过配置文件管理项目的工具(项目管理工具). 2.maven主要功能:发布项目(从编译到 ...

  4. Maven学习专题--Maven入门及安装

    因为项目需要,新项目需要使用Maven开发,但是组内大部分没有接触过maven.我就毅然承担搭建maven环境的任务了.因为一切重头开始,就想把自己的整个搭建环境.项目创建.框架整合和模块管理整个过程 ...

  5. dubbo入门学习笔记之入门demo(基于普通maven项目)

    注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...

  6. Maven学习总结(1)——Maven入门

    Maven学习总结(一)--Maven入门 一.Maven的基本概念 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的 ...

  7. Maven入门详解

    什么是Maven Maven,鼎鼎大名,在今天之前,我对于它一直是处于一种"只闻其名不见其人"的状态.之所以说"只闻其名",是因为Maven太有名了,它是Apa ...

  8. Maven入门详解以及Eclisp的集成

    1.首先要安装Maven到操作系统上 Maven的下载页面:http://maven.apache.org/download.html Maven跟Tomcat很像,下载下来后直接解压在指定的目录就安 ...

  9. Maven入门2-pom.xml文件与settings.xml文件

    Maven入门2-pom.xml文件与settings.xml文件 本文内容来源于官网文档部分章节,settings.xml文件:参考http://maven.apache.org/settings. ...

随机推荐

  1. 嵌入式驱动开发之dsp fpga通信接口---spi串行外围接口、emif sram接口

    -----------------------------------------author:pkf ------------------------------------------------ ...

  2. windows下解决mysql忘记password

    windows下解决mysql忘记password   mysql有时候忘记password了怎么办?我给出案例和说明!一下就攻克了!    Windows下的实际操作例如以下    1.关闭正在执行 ...

  3. 第5步:建立主机间的信任关系(sgdb1、sgdb2)

    5.1 Oracle用户下建立信任 5.11创建.ssh目录 [root@sgdb1 /]# su - oracle [oracle@sgdb1 ~]$ mkdir .ssh       创建一个.s ...

  4. 如何下载ubuntu桌面,并使用

    下载ubuntu,进行linux系统的操作 1.下载ubuntu 百度搜索ubuntu或直达下载链接http://cn.ubuntu.com/download/ 你可以选择,优麒麟16或者Ubuntu ...

  5. Castle 整合.NET Remoting

    今天研究了一下Castle的Remoting Facility.记录如下: 微软以前使用COM/DCOM的技术来处理分布式系统架构,通过Client端的Proxy代理程序来呼叫远程Server机器上的 ...

  6. 提高SDN控制器拓扑发现性能

    原文由我发表在sdnlab.com.原文链接:http://www.sdnlab.com/15425.html SDN网络的一大特点就是资源由控制器集中管理,控制器管理网络,最基本的当然需要知道网络的 ...

  7. [USACO5.5]隐藏口令Hidden Password

    题目链接:传送门 题目大意:给你一个长度 N 的字符串,5<=N<=5,000,000,将首尾合并成环,断环成链并满足字典序最小,输出此时首字母在原串中的位置-1: 题目思路:最小表示法 ...

  8. Python之实现简单计算器功能

    一,需求分析 要求计算一串包含数字+-*/()的类似于3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4)表达式的数值 二,知识点 正 ...

  9. javamail+postfix发送邮件

    由于在做项目时,需要用到邮箱服务.但是不想使用163,qq的,所以就自己搭一个邮箱服务器. 在搜索资料发现postfix是个不错的选择,于是就开始配置了. 这是我搜到的最全的的教程了:http://w ...

  10. decode-encode --其他使用可能有问题

    SELECT id,DECODE(name,'password') FROM test UPDATE test SET `name`=ENCODE(`name`,'password')