maven教程(一)– 初识maven

一.Maven是什么?

  •     Maven是一个用于Java平台项目构建、依赖管理和项目信息管理的软件工具。
  •     它诞生于2002年,它和Apache ant用起来很类似,但是它们的基本设计概念很不相同。
  •     Maven是Apache Software Foundation的组成部分,之前是Jakarta Project的组成部分。
  •     Maven使用POM(project object model)来描述和构建软件项目,它依赖其他的扩展模块和组件。
  •     Maven的一个重要特性是网络化。只要使用者能连接intenet, Maven就会自动的在需要的时候从一个或多个资源库下载需要的plugin和软件包。
  •     Maven基于插件的设计模式,使用不同的插件可以支持不同的语言,现在有.net的插件(NPanday,apache孵化中),也有C/C++的插件。

二.我为什么要用Maven,或者我用Maven有什么好处?

  • 优点:

  • Maven是跨平台的。无论是在Windows上,还是在Linux或者Mac上,都可以使用同样的命令。
  • 使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。
    • 创建项目,自动关联和下载依赖的jar包。
    • jar包统一管理。避免出现名称千奇百怪,版本也不明确等情况。
    • 仓库式管理jar和插件,不同项目使用无需复制或者再从git或svn上下载,大大减少项目的体积。
  • Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定,可以帮助我们标准化构建过程.所有的项目都是简单一致的,简化了学习成本.
  • Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程
  • 趋势:

  • 基本上所有的主流IDE都集成了Maven
  • SpringFramework官网,不再提供Spring的jar包下载链接,而是只提供了Maven仓库配置信息。
  • 即使在不能联网的情况下,只需要在内部用Nexus搭建一个Maven仓库,即可得到相应的jar包。
  • 在github网站里,很多流行的框架,其源码根目录下都有一个pom.xml的文件,也就是说默认都是用Maven来构建项目。

 

  在未使用maven前,项目开发过程中产生的实际问题

  • 同样的代码在我的机器上可以编译执行,而在别人机器上就报错?(程序员口头禅:在我本机上是好的啊。)
  • 为什么在我的机器上可以正常打包,而QA配置管理员却打不出来?
  • 项目组加入了新的人员,我要给他说明编译环境如何设置,但是让我挠头的是,有些细节我也记不清楚了。
  • 工程依赖一大堆jar包,从SVN下载和提交非常困难!
  • 这是我开发的第二个项目,还是需要上面的那些jar包,再把它们复制到我当前项目的svn库里吧。后来又有第三次,再复制一次吧,这样真的好吗?
  • 我修改半年前完成的一个项目的bug,经过分析,这个bug是某个第三方库的bug导致的,我已经找到了第三方库源码错误的位置,只要重新编译并替换第三方库就可以了,但是问题是,我不知道我引用的是什么版本的第三方库,不知道用最新版本会不会有兼容性问题。
  • 我写了一个数据库相关的通用类,并且推荐给了其他项目组,现在已经有五个项目组在使用它了,今天我发现了一个bug,并修正了它,我会把jar包通过邮件发给其他项目组,这不是一个好的分发机制,太多的环节可能导致出现bug。

了解了maven的这些优点后,你觉得上面这几个问题还是问题吗?对吧。

 

古人征战,得民心者得天下。我觉得在21世纪的IT界,只有得趋势者得天下。IT就是一个生态圈,只有一起玩的人多了,才会越来越完善。

 

与maven一样好用的还有git,maven和git必然是极大提升效率的两大基础利器,希望还未掌握这两门技术的同学,能花一点时间学习下,扫除技术沟通的阻碍,不要再停留在史前时代了。

 

下一篇文章,我会介绍如何搭建一个maven的环境。

 

以上文章均为作者原创,未经许可请勿转载。如非要转载,请保持最后的底线,注明来源。

猜您喜欢