如果你已经有十次输入同样的ant targets来编译你的代码、jar或者war、生成javadocs,你一定会自问,是否有有一个重复性更少却能同样完成该工作的方法。maven便提供了这样一种选择,将你的注意力从作业层转移到项目管理层。maven项目已经能够知道如何构建和捆绑代码,运行测试,生成文档并宿主项目网页。
o'reilly's的新书maven:a developer's notebook帮你提升你的项目、使其尽快的运行起来,同时也提供了对maven插件及其团队协作等高级特性的深度考察。在“maven jump-start” (656k pdf)的示范章节中,作者vincent massol和timothy m.o'brien向你展示了如何安装maven,如何开始你初次的构建,研究如何使其与ides集成极其资源管等特性。
vincent massol是jakarta catus framework(框架)的创建者。其后他花费4年的时间在几个大项目(主要是j2ee)的架构技术上。他现在是pivolis的创办人和cto,这是一家专注于应用敏捷方法进行软件开发的公司。他现在居住在法国的首都city of light(巴黎)。
timothy m. o'brien作为一个专业的歌手/程序员现正在芝加哥地区工作和生活。

让我们开始使用maven。在本章结束时,你应该能够从头建立一个maven的项目,使用maven进行相关管理,创建基于某些感兴趣报告的简单的web站点。
安装maven
开始本书以前,你有一些必备的安装工作。本书中的例子用java1.4.2编写,maven能够兼容java1.4.2和java1.5.0。本书中所写maven的最新版本是在编写本书时发布的―maven 1.0.2。除jdk和maven1.0.2之外,你还需要连接到internet,maven将通过公网站点下载相关其需要的。那么,前进,安装maven吧。
我该如何做?
从apache software foundation(asf)下载maven。进入http://maven.apache.org/从左侧的导航菜单中的getting maven菜单选择下载。它将带你进入一个让你选择windows 安装包、zip文件、tar'd.bzip文件或者tar'd.gzip文件。下载适合你平台的分类。
我该如何做?
从apache software foundation(asf)下载maven。进入http://maven.apache.org/从左侧的导航菜单中的getting maven菜单选择下载。它将带你进入一个让你选择windows 安装包、zip文件、tar'd.bzip文件或者tar'd.gzip文件。下载适合你平台的分类。
提示
某些developer's notebook中涉及的插件未与maven1.0.2绑定。请参考第6章并且附录a有安装maven所需插件的全部列表以及详细说明。
在microsoft windows平台,下载windows安装包(maven-1.0.2.exe),跟随自动安装过程中的提示。在使用maven windows 安装器进行安装后,你应该定义一个用户环境变量,maven_home,指向你本地的maven安装。你此时需要进入控制面版→系统→高级选择环境变量按钮,添加%maven_home%/bin到你的path环境变量。进入命令提示行运行cmd.exe,如果maven安装成功,你将能够看到命令行有下面的输出:
c:/dev/mavenbook/code>maven -v
__ __
| // |__ _apache__ ___
| |//| / _` / v / -_) ' / ~ intelligent projects ~
|_| |_/__,_|/_//___|_||_| v. 1.0.2
如果你愿意安装maven到一个除了c:/program files/apache software foundation/maven 1.0.2的目录,你也可以下载maven1.0.2.zip文件,解压缩到任何目录。设置maven_home指 向到maven解压缩的目录,并且添加%maven_home%/bin到你的path环境变量。
在unix平台,下载tar'd.zip文件(maven-1.0.2.tar.gz)并接压缩tar xvzf maven-1.0.2.tar.gz到你选择的目录。本试验假设你解压maven到/usr/local/maven-1.0.2目录下。你此时需要设置两个环境变量,maven_home和path。下面的命令为这两个变量设置适当的值:
[tobrien@mavenbook tobrien]$ export maven_home=/usr/local/maven-1.0.2
[tobrien@mavenbook tobrien]$ export path=${path}:${maven_home}/bin
如果maven被成功安装到你的机器,你能够看到与windows系统同样的输出。恭喜!你已经成安装了maven。
提示
有些人喜欢保存本地应用程序在unix下的/opt目录或
windows下的c:/apps。你可以根据个人喜好安装maven。
刚刚发生了什么?
你刚刚安装了maven1.0.2并且配置了一些环境变量。是的!一旦你对maven_home进行了有效的设置或是maven.bat或maven.sh已经存在,你已经能够完成developer's notebook本次的实验。
关于......maven 2?
是时机提及maven 2(有时也被称为“m2”)。maven 2完成了对maven 1的重写。重写的首要目的是要提供了强大的jave构建和包含api的项目,允许maven被植入任何地方,尤其是高级别的产品如ides、质量工具、报告工具等这些。maven 2构建生命周期的概念正式话,其比maven更易扩展。
maven 1和maven 2有许多共同点,但它们还有几个主要的不同之处。在书中的各个部分我们尽可能提示你所希望了解的那些不同之处。更多关于maven 2的信息,请转到http://maven.apache.org/下载maven 2的体验版本,并加入maven用户或开发者邮件列表。如果你听过continuous integration,你可能也想看一看命名为continuum的maven子项目,地址在http://maven.apache.org/continuum。
开始一个新的项目
创建新项目的争论一部分在于有很大部分的工作努力被用到在“发展基础设施”上―自动构建、单元测试、文档、项目报告等。使用maven你可以加速这个过程,生成项目的框架使其作为新应用的种子。
我该如何做?
maven拥有一个应用程序生成插件(genapp)你能通过其创建一个新项目。首先创建一个空的目录c:/dev/mavenbook/code/genapp/test-application这将成为应用程序生成后的处所。通过执行genapp这个目标来运行genapp插件,选择默认的模版并且提供一些你的新项目的相关信息。
c:/dev/mavenbook/code/genapp/test-application>maven genapp
__ __
| // |__ _apache__ ___
| |//| / _` / v / -_) ' / ~ intelligent projects ~
|_| |_/__,_|/_//___|_||_| v. 1.0.2
attempting to download commons-jelly-tags-interaction-20030211.143817.jar.4k downloadedenter a project template to use: [default][enter]please specify an id for your application:
[app]test-applicationplease specify a name for your application: [example application]test applicationplease specify the package for your application: [example.app]mdn.testappbuild:start:genapp:
[copy] copying 1 file to c:/dev/mavenbook/code/genapp/test-application/src/java/mdn/testapp[copy] copying 3 files to c:/dev/mavenbook/code/genapp/test-application/src/test/mdn/testapp[copy] copying 1 file to c:/dev/mavenbook/code/genapp/test-application/[copy] copying 2 files to c:/dev/mavenbook/code/genapp/test-application/build successful
本插件会要求用户一些输入,从这个输出内容你可以看到你使用了默认的(defalut)应用程序模板,并且你提供了新项目的应用程序id、name,和包名。默认的(default)应用程序模板创建了一个单独的类,mdn.testapp.app,和一个静态main函数和两个junit测试。
maven的应用程序生成插件生成了下面的目录和文件:
test-application/project.propertiesproject.xmlsrc/conf/app.propertiesjava/mdn/testapp/app.javatest/mdn/testapp/abstracttestcase.javaapptest.javanaughtytest.java
所有maven项目有一个参考了项目对象模型(pom)的标准目录结构, (as described shortly)。如果你有一些现存的类你想添加到一个项目,添加它们到src/java,如果你有一些单元测试将它们添加到src/test。如果这些已有的类和单元测试依赖一些外部的苦,你将在随后的章节看到如何添加一个附属。xdos目录包含了格式为xdoc的项目文档。
提示
请注意maven1.0.2装载的genapp插件版本创建了非标准的布局。在maven项目中src/java和src/test不再出现在固有的源代码和单元测试位置。取而代之的是你可以使用src/main/java和src/test/java.为了改变这些,修改你项目的xml文件,改变src/java的引用为src/main-/java,src/test的引用为src/test/java.更多的信息,请参见“maven conventions”,地址在http://maven.apache.org/-reference/conventions.html.
project.xml是项目的描述符;它是一个内容为pom的xml文件。让我们看看这个project.xml的拷贝,其已经定义了这个项目:
<project>
<pomversion>
3</pomversion>
<artifactid>test-application
</artifactid><name>test application
</name><currentversion>1.0
</currentversion><organization>
<name>
your organization
</name>
<url>http://www.someorganization.biz/</url>
<logo>http://www.someorganization.biz/logo.gif|jpg|...</logo>
</organization><inceptionyear>2005</inceptionyear>
<package>mdn.testapp
</package>
<logo>http://yourproject/logo.jpg|gif|...
</logo><description>an example projec
闽公网安备 35060202000074号