使用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程序:
- 通过svn下载一个java代码分支1.0,带main方法的helloworld即可,放在googlecode easymorse项目中;
- 编译和打包项目;
- 导入eclipse;
- 增加一个项目分支1.1,用main方法调用一个示例类,类有一个实例方法,输入一个Date对象,返回一个“xx年xx月xx日”,演示svn版本分支切换功能,切换到这个分支上来,这里顺便复习一下svn;
- 为1.1版本生成javadoc;
- 为1.1版本增加测试代码,并执行打包,演示自动递归测试;
- 为1.1版本生成web site,并部署到dev上,演示生成web站的能力,并且能列出开发人员等信息;
- 将jar文件部署到easymorse的资源库当中;
- 再编写一个项目(也放到easymorse的googlecode)引用此类库,演示类库依赖管理。
TODO,第二个示例,web应用:
- 编写一个helloworld web项目,提交到googlecode;
- svn下载这个版本,使用jetty和tomcat直接运行程序;
- 将程序导入到eclipse中;
- 程序远程部署到tomcat上去。
TODO,可选,自动生成数据库结构和记录。
Maven的基本功能
结合上面演示的示例,列出maven的基本功能如下:
- 构建:比如生成class、jar、war或者ear文件;
- 生成文档:比如生成javadoc、网站文档;
- 生成报告:比如junit测试报告;
- 生成依赖类库:生成文档,说明项目多其他软件的依赖;
- 有关SCM:SCM(Software Configuration Management),软件配置管理,比如版本控制,比如bug管理等等;
- 发布:生成供发布的分发包,比如生成Struts2的分发包,供提交给用户使用;
- 部署:比如,web应用程序,自动部署到指定的服务器上。
Maven资源
- 官方网站:http://maven.apache.org/;
- The 5 minute test http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html,官方简易入门文档;
- Getting Started Tutorial http://maven.apache.org/guides/getting-started/index.html,官方入门文档;
- Getting Started Tutorial http://maven.apache.org/guides/getting-started/index.html,官方入门文档;
- Getting Started Tutorial http://maven.apache.org/guides/getting-started/index.html,官方入门文档;
- Settings Reference http://maven.apache.org/settings.html,settings文件的设置参考;
- Better Builds with Mavenhttp://www.devzuz.com/web/guest/products/resources,免费的电子书,下载需要注册。
Maven的基本结构