早期还在学怎么用Ant构建项目时,就有看到说Maven是Ant的替代品,但真正意义去了解Maven,还是因为以前的公司一老员工在做OpenJMS二次开发时,从网上下载了源码,然后用Maven构建它。

当时跟他还因为这个产生了分歧,原因就是在本人看来,eclipse的功能已经非常强大,创建项目、编译、打包、导出、发布,这些功能eclipse都能做,为什么还要用一个学起来有点复杂,用起来也不是很方便的工具?

说说最近遇到几个现象:

1、以前要想在eclipse里用Maven功能都是要额外装m2eclipse插件,但是从eclipse4.4(代号Luna,2014年推出)开始,maven成了它的标准插件,从官网下载下来的eclipse就已经自带Maven功能

2、SpringFramework官网,不再提供Spring的jar包下载链接,而是只提供了Maven仓库配置信息。

3、在github网站里,很多流行的框架,其源码根目录下都有一个pom.xml的文件,也就是说默认都是用Maven来构建项目。

4、在建行这边开发的项目,基本都是用Maven来构建,虽然开发的电脑不能联外网,但建行内部用Nexus自己搭建了一个Maven仓库。

5、一同学,他在惠普里做的项目也是用Maven构建,也是内部自建Maven仓库。

这些种种迹象说明了Maven已经成为一个标杆,就算现在暂时没用它,但也不得不去了解它。

因为Maven功能很多,所以看起来会觉得很复杂,自然会觉得学起来难度比较大。这也就让很多原本想学习用Maven做项目构建的人,望而却步。

所以到底用,还是不用,这需要一些权衡判断,所谓工具,就是提供了一些自动化的功能,用它的时候会很方便,不用的话就什么都得自己手动操作。

总结一下Maven可以用上的几种场景

1、创建项目,自动关联和下载依赖的jar包。

用Eclipse新建项目时,创建的只是一个空的项目,如果要加入其他框架的功能需要手动导入jar包。一般的处理方法,就是到对应的官网下载相应的jar包。这时候会存在一个疑惑,就是从官网下载下来的软件包里,包含了它所有功能的jar包,哪一些jar包有用,哪一些没用,比较笨的办法就是把所有jar包都扔到项目的lib里面。这样就造成整个项目体积庞大,增加了项目发布的I/O流量,在开发测试时,服务启动时间变长(Tomcat要在更多的jar包中去查找相应的类)。

另外一个问题就是各个jar包版本的问题,像很多框架都关联了apache的commons-lang3,commons-logging等,但不同框架的版本,对应关联的第三方jar包版本也不一样。

用Maven,就可以很好的解决jar包关联问题,比如要Struts框架,只需在pom.xml文件里,添加以下配置

<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.24.1</version>
</dependency>

Maven就自动的从仓库中下载相应的jar包,导入到项目中,而且它还能自动传递依赖,也就是把struts相关的jar包也导入。

2.升级框架的版本
升级某个框架的版本,但却不知道与它相关联的哪几个jar也需要跟着升级,和升级到哪个版本。用法跟上面类似,只需把版本改一下就行。

3.自动部署
项目部署到云服务器时,整个过程全是手动部署,需要的步骤有:打开eclipse,编译(如果代码有更新的话),导出war包,上传war包到云服务器上,重启tomcat。如果只是几台服务器,这样步骤还能接受,但如果有几十台,甚至上百台服务器呢?

用Maven只需一个命令,就可以把项目自动部署到远程服务器上。

4.项目编译打包导出

这个随意一个IDE都能做到,所以如果要Maven做这件事,可能的场景,就是做没有装IDE的环境里,比如在服务器端Linux环境下。

为什么要用Maven?的更多相关文章

  1. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

  2. 理解Maven中的SNAPSHOT版本和正式版本

    Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...

  3. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

  4. 安装eclipse的maven插件

    我们团队用maven来管理项目需要的库文件,其实以前都没听过maven,第一次接触这个,师兄要我直接去装下这个,开始以为还挺简单的,没想到中间遇到了一些小麻烦,现在把我成功安装maven的过程分享下, ...

  5. MAVEN学习-第一个Maven项目的构建

    MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...

  6. Maven 代理设置

    在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies>    <!-- proxy     | Specificatio ...

  7. spring maven pom.xml设置

    spring pom.xml设置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  8. maven依赖查询地址

    http://search.maven.org/#search%7Cga%7C1%7C

  9. maven 中snapshot版本和release版本的区别

    maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...

  10. Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题

    现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...

随机推荐

  1. django中上传图片的写法(转)

    view参数 @csrf_exemptdef before_upload_avatar(request):    before = True    return render_to_response( ...

  2. 使用NodeJS、GruntCLI遇到的问题

    运行环境CMD NODEJS版本v0.8.4  node --version 需求:需要用到Grunt的JS编译功能,各位别笑我. 使用代理 npm config set proxy http://i ...

  3. css3制作惊艳hover切换效果

    css3制作经验hover切换效果 <!DOCTYPE html><html> <head> <meta charset="UTF-8" ...

  4. Windows Store App 关键帧动画

    关键帧动画和插值动画类似,同样可以根据目标属性值的变化产生相应的动画效果,不同的是,插值动画是在两个属性值之间进行渐变,而关键帧动画打破了仅通过两个属性值控制动画的局限性,它可以在任意多个属性值之间进 ...

  5. Hash哈希类型

    hash类型是使用得非常非常多的一种redis数据类型,相当于C#中的Dictionary和Hashtable. hset命令(语法:hset key field value)将哈希表key中的fie ...

  6. C#微信公众号开发-高级接口-之模板消息开发,附源码

    个人觉得模板消息功能的增加对公众号的作用非常大,可以说是真正意义上的实现了所谓的轻app,商家可以通过模板消息给用户发送重要的信息,交易.预约.消费.邮件.物流等信息.之前我做过的系统通过邮件发送订单 ...

  7. mssql 修改文件逻辑名称

    --查看文件逻辑名SELECT name FROM sys.database_files ALTER DATABASE [本身数据库名称]MODIFY FILE ( NAME = [原错误数据库名称] ...

  8. jetty启动不能保存

    主要原因是jetty缓存的静态页面不能被修改.只需要在web.xml文件中配置如下: <servlet>    <!-- Override init parameter to avo ...

  9. Win7下通过eclipse远程连接CDH集群来执行相应的程序以及错误说明

    最近尝试这用用eclipse连接CDH的集群,由于之前尝试过很多次都没连上,有一次发现Cloudera Manager是将连接的端口修改了,所以才导致连接不上CDH的集群,之前Apache hadoo ...

  10. 2014年3月份第4周51Aspx源码发布详情

    足购库存管理系统源码  2014-3-24 [VS2010]功能介绍:这是为一个卖鞋子的朋友设计的,本来要用SQL数据库的,可是他说他不想安装,怕拖电脑速度,没办法,用了Access,在数据同步上和S ...