如果你已经有十次输入同样的Ant targets来编译你的代码jar或者war生成javadocs你一定会自问是否有有一个重复性更少却能同样完成该工作的方法Maven便提供了这样一种选择将你的注意力从作业层转移到项目管理层Maven项目已经能够知道如何构建和捆绑代码运行测试生成文档并宿主项目网页 OReillys的新书Maven:A Developers Notebook帮你提升你的项目使其尽快的运行起来同时也提供了对Maven插件及其团队协作等高级特性的深度考察在Maven JumpStart (K PDF)的示范章节中作者Vincent Massol和Timothy MOBrien向你展示了如何安装Maven如何开始你初次的构建研究如何使其与IDEs集成极其资源管等特性 Vincent Massol是Jakarta Catus framework(框架)的创建者其后他花费年的时间在几个大项目(主要是JEE)的架构技术上他现在是Pivolis的创办人和CTO这是一家专注于应用敏捷方法进行软件开发的公司他现在居住在法国的首都City of Light(巴黎) Timothy M OBrien作为一个专业的歌手/程序员现正在芝加哥地区工作和生活 让我们开始使用Maven在本章结束时你应该能够从头建立一个Maven的项目使用Maven进行相关管理创建基于某些感兴趣报告的简单的web站点 安装Maven 开始本书以前你有一些必备的安装工作本书中的例子用Java编写Maven能够兼容Java和Java本书中所写Maven的最新版本是在编写本书时发布的—Maven 除JDK和Maven之外你还需要连接到InternetMaven将通过公网站点下载相关其需要的那么前进安装Maven吧 我该如何做? 从Apache Software Foundation(ASF)下载Maven进入从左侧的导航菜单中的Getting Maven菜单选择下载它将带你进入一个让你选择Windows 安装包zip文件tardbzip文件或者tardgzip文件下载适合你平台的分类 我该如何做? 从Apache Software Foundation(ASF)下载Maven进入从左侧的导航菜单中的Getting Maven菜单选择下载它将带你进入一个让你选择Windows 安装包zip文件tardbzip文件或者tardgzip文件下载适合你平台的分类 提示 某些Developers Notebook中涉及的插件未与Maven绑定请参考第章并且附录A有安装Maven所需插件的全部列表以及详细说明 在Microsoft Windows平台下载Windows安装包(mavenexe)跟随自动安装过程中的提示在使用Maven Windows 安装器进行安装后你应该定义一个用户环境变量MAVEN_HOME指向你本地的Maven安装你此时需要进入控制面版→系统→高级选择环境变量按钮添加%MAVEN_HOME%\bin到你的PATH环境变量进入命令提示行运行cmdexe如果Maven安装成功你将能够看到命令行有下面的输出 C:\dev\mavenbook\code>maven v __ __ | \/ |__ _Apache__ ___ | |\/| / _` \ V / _) \ ~ intelligent projects ~ |_| |_\___|\_/\___|_||_| v 如果你愿意安装Maven到一个除了C:\Program Files\Apache Software Foundation\Maven 的目录你也可以下载Mavenzip文件解压缩到任何目录设置MAVEN_HOME指 向到Maven解压缩的目录并且添加%MAVEN_HOME%\Bin到你的PATH环境变量 在Unix平台下载tardzip文件(Maventargz)并接压缩tar xvzf maventargz到你选择的目录本试验假设你解压Maven到/usr/local/maven目录下你此时需要设置两个环境变量MAVEN_HOME和PATH下面的命令为这两个变量设置适当的值 [tobrien@mavenbook tobrien]$ export MAVEN_HOME=/usr/local/maven [tobrien@mavenbook tobrien]$ export PATH=${PATH}:${MAVEN_HOME}/bin 如果Maven被成功安装到你的机器你能够看到与Windows系统同样的输出恭喜!你已经成安装了Maven 提示 有些人喜欢保存本地应用程序在Unix下的/opt目录或 Windows下的c:\apps你可以根据个人喜好安装Maven 刚刚发生了什么? 你刚刚安装了Maven并且配置了一些环境变量是的!一旦你对MAVEN_HOME进行了有效的设置或是mavenbat或mavensh已经存在你已经能够完成Developers Notebook本次的实验 关于Maven ? 是时机提及Maven (有时也被称为m)Maven 完成了对Maven 的重写重写的首要目的是要提供了强大的Jave构建和包含API的项目允许Maven被植入任何地方尤其是高级别的产品如IDEs质量工具报告工具等这些Maven 构建生命周期的概念正式话其比Maven更易扩展 Maven 和Maven 有许多共同点但它们还有几个主要的不同之处在书中的各个部分我们尽可能提示你所希望了解的那些不同之处更多关于Maven 的信息请转到下载Maven 的体验版本并加入Maven用户或开发者邮件列表如果你听过Continuous Integration你可能也想看一看命名为Continuum的Maven子项目地址在 开始一个新的项目 创建新项目的争论一部分在于有很大部分的工作努力被用到在发展基础设施上—自动构建单元测试文档项目报告等使用Maven你可以加速这个过程生成项目的框架使其作为新应用的种子 我该如何做? Maven拥有一个应用程序生成插件(Genapp)你能通过其创建一个新项目首先创建一个空的目录c:\dev\mavenbook\code\genapp\testapplication这将成为应用程序生成后的处所通过执行genapp这个目标来运行Genapp插件选择默认的模版并且提供一些你的新项目的相关信息 C:\dev\mavenbook\code\genapp\testapplication>maven genapp __ __ | \/ |__ _Apache__ ___ | |\/| / _` \ V / _) \ ~ intelligent projects ~ |_| |_\___|\_/\___|_||_| v Attempting to download commonsjellytagsinteractionjarK downloadedEnter a project template to use: [default][Enter]Please specify an id for your application: [app]testapplicationPlease specify a name for your application: [Example Application]Test ApplicationPlease specify the package for your application: [exampleapp]mdntestappbuild:start:genapp: [copy] Copying file to C:\dev\mavenbook\code\genapp\testapplication\src\java\mdn\testapp[copy] Copying files to C:\dev\mavenbook\code\genapp\testapplication\src\test\mdn\testapp[copy] Copying file to C:\dev\mavenbook\code\genapp\testapplication\[copy] Copying files to C:\dev\mavenbook\code\genapp\testapplication\BUILD SUCCESSFUL 本插件会要求用户一些输入从这个输出内容你可以看到你使用了默认的(defalut)应用程序模板并且你提供了新项目的应用程序IDname和包名默认的(default)应用程序模板创建了一个单独的类mdntestappapp和一个静态main函数和两个JUnit测试 Maven的应用程序生成插件生成了下面的目录和文件 testapplication/projectpropertiesprojectxmlsrc/conf/apppropertiesjava/mdn/testapp/Appjavatest/mdn/testapp/AbstractTestCasejavaAppTestjavaNaughtyTestjava 所有Maven项目有一个参考了项目对象模型(POM)的标准目录结构 (as described shortly)如果你有一些现存的类你想添加到一个项目添加它们到src/java如果你有一些单元测试将它们添加到src/test如果这些已有的类和单元测试依赖一些外部的苦你将在随后的章节看到如何添加一个附属xdos目录包含了格式为XDoc的项目文档 提示 请注意Maven装载的Genapp插件版本创建了非标准的布局在Maven项目中src/java和src/test不再出现在固有的源代码和单元测试位置取而代之的是你可以使用src/main/java和src/test/java为了改变这些修改你项目的xml文件改变src/java的引用为src/main/javasrc/test的引用为src/test/java更多的信息请参见Maven Conventions地址在reference/l projectxml是项目的描述符它是一个内容为POM的XML文件让我们看看这个projectxml的拷贝其已经定义了这个项目 <project> <pomVersion> </pomVersion> <artifactId>testapplication </artifactId><name>Test Application </name><currentVersion> </currentVersion><organization> <name> Your Organization </name> <url>;/url> <logo>|jpg|</logo> </organization><inceptionYear></inceptionYear> <package>mdntestapp </package> <logo>|gif| </logo><description>An example projec |