使用Maven

转载自:http://marshal.easymorse.com/tech/use_maven

本文目的

让未使用过maven的开发者尽快上手。

讲解我们在项目中日常使用的maven技术和知识。

注意事项

maven和subversion是项目开发的基础技术,每一个项目组成员都必须会使用的。二者的结合使用可以瞬间搭建起和开发同伴一样的软件和项目环境。建议学习maven前需要先掌握使用Subversion

什么是自动构建工具

自动构建对应的是手动构建。

什么是手动构建,就是比如通过javac等工具编译打包程序。使用IDE工具一般也属于手工构建,比如通过点击菜单项编译和打包程序。

自动构建一般会有一个脚本,直接运行这个脚本,就可以用批处理的方式而不是交互的方式编译、构建和打包程序,甚至可以包括测试和生成程序文档。

为什么要使用自动构建工具

如果只是个人开发的小程序,未必需要自动构建工具,通过IDE工具比如eclipse可以简单快速的开发程序。

但是当多人开发复杂应用程序的时候,自动构建就是十分必要的了。比如,网管在外网服务器端部署java程序,首先网管不会用java ide工具,另外,很多外网的生产用服务器没有图形界面。这时候就需要使用自动构建工具。

以下列出使用自动构建工具的理由:

  • 在非图形化界面下构建程序;
  • 构建过程繁琐而且步骤固定,自动构建工具比交互式的手动构建省事省心;
  • 多人分别为同一个项目工作,需要有统一和一致的构建环境,比如类库依赖。

Maven和其他自动构建工具的比较

比较知名的构建工具:make、ant、maven。

make是类unix下强大的自动构建工具,ant和maven是java编写的用于自动构建(不限于java语言)的工具。

ant正在逐渐被maven取代,很多开源软件用maven替代了ant,比如hibernate和spring。

maven比ant强大在于:

  • 不需要写复杂的处理脚本;
  • 声明式的类库依赖管理。

近来,ant借助ivy和maven的资源库也可以做到声明式类库依赖。

触摸Maven

想要学习一门技术,就需要能尽快触摸到它。下面用最简单的示例展示maven的使用。

TODO,第一个示例,普通java程序:

  1. 通过svn下载一个java代码分支1.0,带main方法的helloworld即可,放在googlecode easymorse项目中;
  2. 编译和打包项目;
  3. 导入eclipse;
  4. 增加一个项目分支1.1,用main方法调用一个示例类,类有一个实例方法,输入一个Date对象,返回一个“xx年xx月xx日”,演示svn版本分支切换功能,切换到这个分支上来,这里顺便复习一下svn;
  5. 为1.1版本生成javadoc;
  6. 为1.1版本增加测试代码,并执行打包,演示自动递归测试;
  7. 为1.1版本生成web site,并部署到dev上,演示生成web站的能力,并且能列出开发人员等信息;
  8. 将jar文件部署到easymorse的资源库当中;
  9. 再编写一个项目(也放到easymorse的googlecode)引用此类库,演示类库依赖管理。

TODO,第二个示例,web应用:

  1. 编写一个helloworld web项目,提交到googlecode;
  2. svn下载这个版本,使用jetty和tomcat直接运行程序;
  3. 将程序导入到eclipse中;
  4. 程序远程部署到tomcat上去。

TODO,可选,自动生成数据库结构和记录。

Maven的基本功能

结合上面演示的示例,列出maven的基本功能如下:

  • 构建:比如生成class、jar、war或者ear文件;
  • 生成文档:比如生成javadoc、网站文档;
  • 生成报告:比如junit测试报告;
  • 生成依赖类库:生成文档,说明项目多其他软件的依赖;
  • 有关SCM:SCM(Software Configuration Management),软件配置管理,比如版本控制,比如bug管理等等;
  • 发布:生成供发布的分发包,比如生成Struts2的分发包,供提交给用户使用;
  • 部署:比如,web应用程序,自动部署到指定的服务器上。

Maven资源

Maven的基本结构

 

使用Maven

posted on 2012-05-23 09:04  yang3wei  阅读(304)  评论(0编辑  收藏  举报