网站建设工作自策划实施以来品牌传播策划方案
网站建设工作自策划实施以来,品牌传播策划方案,昆明快速做网站,做新闻微网站有哪些方面maven系列目标#xff1a;从入门开始开始掌握一个高级开发所需要的maven技能。
这是maven系列第1篇。
为什么我们要学习maven?
学习某些技术#xff0c;肯定是我们遇到了某些问题#xff0c;而这些问题目前手头上没有很好的方案去解决#xff0c;此时刚好有一种技术可以…maven系列目标从入门开始开始掌握一个高级开发所需要的maven技能。
这是maven系列第1篇。
为什么我们要学习maven?
学习某些技术肯定是我们遇到了某些问题而这些问题目前手头上没有很好的方案去解决此时刚好有一种技术可以很好的解决这个问题这样能够驱动我们愿意去学。所以我们学任何技术之前需要先了解这种技术能够解决什么问题。带着问题去学习大家才有兴趣才能够更快的掌握。
我们遇到了什么问题呢
maven还未出世的时候我们有很多痛苦的经历。
痛点1jar包难以寻找 比如我们项目中需要用到fastjson此时我们会去百度上检索fastjson相关jar包然后下载下来放到项目的lib下面然后加到项目的classpath下面用着用着发现这个jar的版本太老了不是我们想要的然后又重新去找痛苦啊。 痛点2jar包依赖的问题 jar包一般都不是独立存在的一般一些jar也会用到其他的jar比如spring-aop.jar会用到spring-core.jar这种依赖可能比较简单有些依赖可能有很多级比如a.jar依赖于b.jar而b.jar依赖c.jar而c.jar又依赖于b.jar当你用到a.jar的时候你需要把其他3个也进入才可以所以你用到一个jar的时候你必须明确知道这些jar还会依赖于哪些jar把他们都引入进来否则项目是无法正常运行的当项目用到很多jar的时候我们是很难判断缺少哪些jar的只有在项目运行过程报错了才知道这种也是相当痛苦的浪费了大量时间。 痛点3jar包版本冲突问题 项目中用到了a.jara.jar依赖于c.jar的1.5版本然后我们把这2个jar拷贝到项目中后面又用到了b.jar但是b.jar又依赖于c.jar的1.0版本此时你把b.jar和c-1.0.jar引进来了会发现c.jar有2个版本发生冲突了启动的时候会报错这种情况你要着手去解决jar冲突的问题也是非常痛苦的。 当我们从网上找到一个jar包来使用的时候我们是很难判断这个jar依赖的其他jar的版本的比如a.jar依赖于b.jar你从网上把b.jar找到了最后放入项目中发现b.jar的版本太老了又得去重新找。 记得之前在第三方支付工作的时候我记忆犹新当时用到的是lvy来引入jar的这玩意解决jar包的冲突没有什么好办法为了解决项目中jar包冲突的问题花了整整一周时间。 痛点4jar不方便管理 当我们的项目比较大的时候我们会将一个大的项目分成很多小的项目每个小项目由几个开发负责比如一个电商项目分为账户相关的项目、订单相关的项目、商品相关的项目这些项目的结构都是类似的用到的技术都是一样的ssmspring、springmvc、mybatis然后每个项目都需要把这些jar拷贝一份到自己的项目目录中最后10个项目只是jar就复制了10份后来我们发现项目中有些jar需要升级版本打算替换一下此时我们需要依次去替换10个项目也是相当痛苦。 痛点5项目结构五花八门 很久之前我们使用eclipse搭建一个项目的时候java源码的位置、资源文件的位置、测试文件的位置、静态资源位置、编译之后的class文件位置都是可以随意放的这些是由各自公司的架构师搭建项目时定好的根据他们的经验来定义的导致每个公司可能项目结构都不太一样来新人之后看到项目结构一脸闷逼根本不知道哪是哪需要人指导无形的增加了成本如果大家都按照某种规范采用同一种项目结构这样岂不是很方便么大家按照某种约定项目使用同样的结构比如java文件、资源文件、测试用例、静态资源、编译之后的class、打包之后jar的位置等等各种文件的位置这些东西如果所有做java开发的公司都约定好的这样拿到一个项目之后就可以省去很多事情了。 痛点6项目的生命周期控制方式五花八门 一个项目对于开发来说生命周期是这样的搭建项目结构、编码、跑测试用例、编译、打包、发布到环境测试、发布到生产环境。其中除了编码之外大多数时间都是在编译、打包、发布到测试环境然后测试开始测试测试提出bug开发接着修改bug之后又进行自测、编译、打包、发布到测试环境多数时间都在重复着跑单元测试、编译、打包、发布的工作。在没有自动化编译的时候每个过程都需要我们手动去操作可能有些开发比较优秀将这些操作写出自动化的脚本来进行了但是每个人写的自动化的脚本可能都是不一样的有些用java写有些人用shell写等等。 后面有了Antant可以将运行测试用例、编译、打包、发布搞成自动化的ant自由度比较高需要自己去写很多配置比如编译需要指定源码位于什么地方编译之后的文件放在什么地方。ant的灵活度比极高细节都交给了开发者自己去控制了每个人写出来的ant脚本也是各种各样的不利于大家统一维护和接受。 像上面这些过程几乎是所有java项目都需要经历的属于高频必备的操作如果全世界所有开发java的能够约定好java项目的结构测试用例存放的位置编译之后的class存放的位置、打包之后文件存放的位置自动化脚本都是用同一种规范来开发那么大家最终写的自动化发布的脚本都是类似的只是最后发布的地址不一样其他都是一样的这样的脚本会简化很多新人来了上手也非常快。 maven是什么呢
maven就是解决上面所有痛点的神器算是所有开发者的福音。
使用maven搭建的项目架构都需要遵循同样的结构java源文件、资源文件、测试用例类文件、静态资源文件这些都是约定好的大家都按照这个约定来所有如果你们的项目是使用maven创建的招新人来接手如果他们懂maven根本不需要培训上来就可以看懂整个项目的结构。
maven给每个jar定义了唯一的标志这个在maven中叫做项目的坐标通过这个坐标可以找到你需要用到的任何版本的jar包。
maven会自动解决jar依赖的问题比如你用到了a-1.0.jar而a-1.0.jar依赖于b-1.1.jar和c-1.5.jar当我们通过maven把a-1.0.jar引入之后b-1.1.jar和c-1.5.jar会自动被引入进来。
maven可以很容易的解决不同版本之间的jar冲突的问题。
maven使开发者更加方便的控制整个项目的生命周期比如
mvn clear 可以清理上次已编译好的代码
mvn compile 可以自动编译项目
mvn test 可以自动运行所有测试用例
mvn package 可以完成打包需要的所有操作(自动包含了清理、编译、测试的过程)还有更多更多好用的操作由于maven使所有项目结构都是约定好的所以这些操作都被简化为了非常简单的命令。
我们自己开发了一些工具包需要给其他人使用时只需要一个简单的mvn install命令就可以公布出去了然后将这个jar的坐标告知使用者使用者就可以找到了根本不需要你将jar包传输给他。
由于maven项目结构都是约定好的所以非常方便扩展上面说的各种maven命令都是以插件的形式集成进来的如果你愿意你也可以自己开发一些maven插件给其他人使用比如阿里内部自己开发的插件自动将项目发布到阿里云上面非常方便开发发布项目。
再来看一下官方解释什么是mavenmaven是apache软件基金会组织维护的一款自动化构建工具专注服务于java平台的项目构建和依赖管理。
下篇我们将介绍maven的使用。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88516.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!