Maven2 的新特性

合集下载

Maven的介绍及使用

Maven的介绍及使用

Maven的介绍及使⽤⼀、Maven简介 Maven 是⼀个项⽬管理⼯具,可以对 Java 项⽬进⾏构建、依赖管理,是⼀个⾃动化构建⼯具。

⾃动化构建⼯具:将原材料(java、js、css、html....)->产品(可发布项⽬) 编译-打包-部署-测试 -> ⾃动构建Maven的作⽤:1、管理jar包1. 增加第三⽅jar包(不需要⾃⼰下载jar包)2. 管理jar包之间的依赖关系(maven⾃动关联下载所有依赖的jar包)2、将项⽬拆分成若⼲个模块:借助于Maven可以将⼀个项⽬拆分成多个⼯程。

(例如爱洋葱)Maven能⼲的事情: 清理:删除编译的结果,为重新编译做准备。

编译:java->class 测试:针对于项⽬中的关键点进⾏测试,也可⽤项⽬中的测试代码去测试开发代码 报告:将测试结果进⾏显⽰ 打包:将项⽬中包含的多个⽂件压缩成⼀个⽂件,⽤于安装或部署(java项⽬打成⼀个jar包,web项⽬打成⼀个war包,⽗⼯程-pom) 安装:将打成的包,放到本地仓库,供其他项⽬使⽤。

部署:将打成的包,放到服务器上,准备运⾏。

Eclipse中的项⽬,要在Tomcat中运⾏,需要部署: a、通过eclipse中add and remove按钮进⾏部署 b、将Web项⽬打成⼀个war包,然后将该war包复制到Tomcat/webapps中即可 通常下载⼀个jar包,先在本地仓库中下载,如果本地仓库中不存在,则再联⽹到中央仓库(镜像)去下载。

约定配置: Maven 提倡使⽤⼀个共同的标准⽬录结构,Maven 使⽤约定优于配置的原则,⼤家尽可能的遵守这样的⽬录结构。

如下所⽰:⼆、Maven POM POM(项⽬对象模型) 是 Maven ⼯程的基本⼯作单元,是⼀个XML⽂件,包含了项⽬的基本信息,⽤于描述项⽬如何构建,声明项⽬依赖,等等。

执⾏任务或⽬标时,Maven 会在当前⽬录中查找 POM。

maven2.0学习笔记[摘]-SQ-CSDN博客

maven2.0学习笔记[摘]-SQ-CSDN博客

maven2.0学习笔记[摘]-SQ-CSDN博客Maven简介Maven最初的目的是在Jakarta Turbine项目中使构建处理简单化。

几个项目之间使用到的Ant build文件差异很小,各个JAR都存入CVS。

因此希望有一个标准的方法构建各个工程,清晰的定义一个工程的组成,一个容易的方法去发布项目信息并且去提供一种在各个项目之间共享JAR包。

结果出现了一种功能能用于构建和管理任何基于java的工程。

Maven小组希望他们已经做到了一些事情,这将有助于Java开发者更容易的完成每天的工作并且有助于理解任何基于java的项目。

Maven的目标是:•使构建过程更容易•提供统一构建系统•提供高质量的项目信息•提供开发的最佳实践指南•能无缝的加入新的特性对Maven的错误理解•Maven是一个站点和文档制作工具。

•Maven扩展了Ant,使其能下载到各种依赖包•Maven是一系列可重用的Ant脚本Maven的版本。

Maven现在主要有Maven 1.x和Maven 2.x,其中现在最新版本是Maven 2.02。

Maven 2完成了对Maven 1的重写。

重写的首要目的是要提供了强大的Jave构建和包含API的项目,允许Maven被植入任何地方,尤其是高级别的产品如IDEs、质量工具、报告工具等这些。

Maven 2构建生命周期的概念正式化,其比Maven更易扩展。

因此现在我们主要研究的就是Maven 2。

Maven的安装1.Windows 2000/xp下的安装1.解压缩maven-2.0.2-bin.zip到你希望安装Maven 2.0.2的所在目录。

这里假设你选择了C:\ProgramFiles\Apache Software Foundation\maven-2.0.2.2.将C:\Program Files\Apache Software Foundation\maven-2.0.2\bin目录加入到你的%path%环境变量中。

Maven学习总结(17)——深入理解maven灵活的构建

Maven学习总结(17)——深入理解maven灵活的构建

Maven学习总结(17)——深⼊理解maven灵活的构建⼀个优秀的构建系统必须⾜够灵活,应该能够让项⽬在不同的环境下都能成功构建。

maven为了⽀持构建的灵活性,内置了三⼤特性,即:属性、profile和资源过滤。

1、maven属性maven属性分6类:1、内置属性:如${basedir}表⽰项⽬根⽬录,${version}表⽰项⽬版本2、POM属性:⽤户可以引⽤pom⽂件中对应的值。

如:${basedir} 项⽬根⽬录${project.build.directory} 构建⽬录,缺省为target${project.build.outputDirectory} 构建过程输出⽬录,缺省为target/classes${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}${project.packaging} 打包类型,缺省为jar${project.xxx} 当前pom⽂件的任意节点的内容3、⾃定义属性:⽤户可以在pom的<properties>元素下⾃定义maven属性。

4、setting属性:⽤户可以使⽤以settings开头的属性引⽤settings.xml中xml元素的值,如${settings.localRepository}指向⽤户本地仓库的地址。

5、java系统属性:maven可以使⽤当前java系统的属性,如${user.home}指向了⽤户⽬录。

6、环境变量属性:所有环境变量都可以使⽤以env.开头的属性。

如:${env.JAVA_HOE}。

2、资源过滤这⾥所谓的资源:也就就是指src/main/resources和src/test/resources⽂件下的所有⽂件,默认情况下,这些⽂件会被复制到classpath下⾯,即target/classes下⾯。

所谓资源过滤,就是过滤这些⽂件夹下⾯的⽂件⾥⾯的内容,看⾥⾯的maven变量是否需要替换。

maven2详细教程

maven2详细教程

Maven 2 详细教程开始之前现代软件开发基于健壮的企业级开源技术,它需要一类新的构建工具和项目协作工具。

Apache Maven 2 的核心引擎旨在简化往往十分复杂的大型协作性软件项目的构建和管理。

在大型项目团队环境中工作是种挑战,而 Maven 2 以友好为设计目的,即便对那些不熟悉这种挑战的开发人员而言,Maven 2 也足够友好。

本教程首先围绕单个的新手开发展开,然后逐渐介绍 Maven 2 中的一些协作性的概念和功能。

我们鼓励您在本教程提供的介绍之上,探究本文范围之外的Maven 2 的一些高级功能。

关于本教程本教程将循序渐进地向您介绍有关 Maven 2 的基础概念和实践练习,具体内容包括:∙Maven 2 概览∙理解 Maven 2 依赖项管理模型∙Maven 2 存储库和 Maven 2 坐标∙Maven 2 生命周期、阶段、插件和 mojo∙下载和安装 Maven 2∙实践 Maven 2 ——您的第一个 Maven 2 项目∙定制项目对象模型(POM)∙参与多个项目∙实践 Maven 2 ——参与多个项目构建∙在 Eclipse 3.2 中安装 Maven 2.x Plug-in∙在 Eclipse 3.2 中使用 Maven 2.x Plug-in∙支持上述 JDK/JRE 的系统,有至少 1GB 的主存∙有至少 20MB 的磁盘空间来安装软件组件和样例本教程中的说明基于 Microsoft Windows 操作系统。

教程中涵盖的所有工具也可以在Linux® 和UNIX® 系统上运行。

Maven 2 概览Maven 是一个顶级的 Apache Software Foundation 开源项目,创建它最初是为了管理 Jakarta Turbine 项目复杂的构建过程。

从那以后,不论是开源开发项目还是私有开发项目都选择 Maven 作为项目构建系统。

Maven 快速地发展着,如今已是第二版,Maven 已经从针对单个复杂项目的定制构建工具成长为广泛使用的构建管理系统,其丰富的功能可以应用于大多数的软件开发场景。

maven2之m2eclipse使用手册

maven2之m2eclipse使用手册

[使用心得]maven2之m2eclipse使用手册之一简介与配置文件settings.xml近期因朋友项目中要用到maven2,所以顺带学习了一下,由于个人比较讨厌cmd的命令使用maven,所以没有去apache下在maven的安装文件使用,而eclipse正好提供了关于maven2的插件,结果发现不需要安装maven2的安装包即可拥有maven2的命令功能.本文章基于maven-2.2.1和m2eclipse0.10.0版本和eclipse-reporting-galileo-SR2版本(以包含eclipse-jee-galileo-SR2) 所写,如有跟其他版本有所出入请见谅m2eclipse在线安装地址如下:/sites/m2e安装前提必须Eclipse要求已经安装了以下插件:subclipse(svn) 在线安装地址:/update_1.6.xMylyn在线安装地址:/tools/mylyn/update/e3.4/ Mylyn Extras (JIRA 支持): /tools/mylyn/update/extrasAspectJ Tools Platform (AJDT)在线安装地址:/tools/ajdt/35/dev/updateWeb Tools Platform (WTP)在线安装地址:/webtools/updates/由于本机没有独立安装maven2的安装包,所以安装完毕后是没有setting.xml这个配置文件的,启动eclipse后如果没有之前没有指定本地jdk路径的话,会提示要求指定jdk在那个地方,编辑eclipse.ini加入以下两段文字:-vmC:/Program Files/Java/jdk1.6.0_20/bin-vm:是指定当前虚拟机的位置,默认安装好的eclipse是没有该项的,记住-vm标记必须要在-vmargs前面加否则会出现报错,C:/Program Files/Java/jdk1.6.0_20/bin:就是你本机jdk bin的位置了对于eclipse.ini的位置是在你所解压的eclipse中的根目录例如我的就是在E:\JavaWorkingTools\IDETools\Eclipse\IDE\eclipse\eclipse.ini还有一个很重要的东西,m2eclipse已经为你创建了一个{user.dir}/.m2/repository的本地中央仓库的文件夹,你可以通过配置settings.xml来更改本地中央仓库的文件夹{user.dir}:就是你当前用户下的文件夹,例如我的是Edward相对于maven2来说maven2的设置比maven1简单多了只有setting.xml和pom.xml。

Jdeveloper开发工具资料

Jdeveloper开发工具资料

Jdeveloper开发工具优化(一)一、前言Jdeveloper开发工具是Oracle公司开发的一套强大的企业级应用开发工具。

它集成了Oracle ADF(后面简称ADF)开发框架,如果您打算采用Oracle ADF开构建您自己的企业级应用,Jdeveloper将是最好的选择。

笔者所在公司已经使用Jdeveloper开发ADF应用已经有一年多的时间了,随着应用的不断增大,Jdeveloper在运行效率方面出现了许多不尽人意的地方,这主要表现在,开发调试慢。

开发慢将影响一个团队的工作效率,从而导致项目成本的增加。

笔者在这篇文章及其后的几篇文章中,逐一对Jdeveloper开发效率慢的几个问题加以分析,并提供解决方案。

二、约定1、操作系统:winxp2、内存:4G3、CUP:4核4、Jdeveloper版本11.1.1.3.0三、问题分析与解决1、打开Jdeveloper载入项目2、打开一个编辑好的jspx页面3、菜单中bulid 项目下选择“clean all”,等待 Messageslog中看到clean compliation4、页面上点右键,选择Run5、在messgaesLOg 中看到Appc日志上面是一个小项目的运行流程,当应用很大的时候,我们会发现第5步出现下图问题:当项目大的时候,这个Appc过程竟然运行了27分36秒,真是太可怕了!让我们来看看这个过程做了什么吧,请进行如下配置:1.编辑 [JDEVHOME]\jdeveloper\jdev\bin\jdev.conf2.文件末尾增加一行:AddVMOption -Djdev.webapp.verbose.appc=true3.在命令行启动jdev:进入命令窗口,cmd, cd 【JDEVHOME】\jdeveloper\jdev\bin,jdev4.重复步骤。

5. 观察命令行窗口输出,在进行APPC时,会显示详细信息,如下图所示从图上可以看出,appc在做jsp的预编译,在做预编译的过程中,出现了内存溢出,故而,出现了上面27分多钟的等待。

Maven2构建

第一章介绍Maven2是一种项目管理框架,能够简化项目的开发,形成统一的规范,节省操作时间。

Maven2是规范的开发流程、软件开发的约定、项目管理框架、构建工具。

Maven2对项目进行了抽象,用POM描述。

Maven2能够提供一致性、过程重用、敏捷性、可维护性。

1. Maven2的原则:1.1 配置管理的约定项目目录的标准结构:利用维护人员的知识重用,节省时间一个项目单个输出:利于模块化,利于按模块重用,当个目标输出,利用依赖管理来解决模块间的关联关系命名约定:利于维护,输出一般为<artifactId>-<version>.<extension>1.2 构建逻辑重用过程的执行均由plug-in进行,某个阶段对应一个plug-in1.3 根据声明执行过程的执行通过在POM中的声明进行1.4 一致的依赖管理在POM中定义项目依赖。

对构建物的引用即为依赖,Maven根据POM中定义的依赖从respository中查找依赖。

Respository分为local和remote,先查找local再查找remote。

在依赖定义中的<groupId><artifactId><version><extension>与查找依赖项的关系:maven会在respository的groupId/ artifactId/ version目录中查找名为<artifactId>-<version>.<extension> 的构建物。

如果groupId为com.x..y.z,则按照java包管理的方式对依赖项所在目录进行管理。

所有的项目,只要是依赖同一个构建物只在respository保存一份,并非按项目放在lib目录下。

第二章安装与使用1. 安装与配置1.1 安装a.从网站下载Maven2,解压即可b.在环境变量中添加M2_HOME指向解压后的目录c.在PATH中添加$M2_HOME/bind.在环境变量中添加JAVA_HOME指向JDK安装目录e.在命令行运行mvn –-version检查安装是否成功1.2 配置a.命令行下运行mvn install或mvn compile,会在用户的home目录下生成.m2b.在.m2目录下新建文件settings.xml添加如下内容<settings><localRepository>D:\maven2_respository</localRepository><proxies><proxy><active>true</active><protocol>http</protocol><host>22.11.129.77</host><port>8080</port><username>lrs0669</username><password>password01:</password><nonProxyHosts>|*</nonProxyHosts></proxy><proxy><active>true</active><protocol>http</protocol><host>22.1.227.85</host><port>808</port><username></username><password></password><nonProxyHosts>|*</nonProxyHosts></proxy></proxies></settings>◆l ocalRepository定义local repository,下载jar包所放的路径和执行项目的install命令所生成的构建输出放在localRepository中◆如果通过代理服务器访问remote respository,代理服务器信息在proxy中定义,可以定义多个c.在命令行下执行各个命令,maven2会根据需要从互联网上下载所需要的jar包2. 创建第一个Maven项目使用Maven的原型机制创建一个项目,Maven根据模版项目新建项目,原型项目包含了一个项目涉及到的所有方面。

Maven2中snapshot快照库的使用铁木箱子

Maven2中snapshot快照库的使用铁木箱子之前有过几篇文章介绍了mavven中release和snapshot库的作用,如下(不太了解的可以参考看一下):1、maven2中snapshot快照库和release发布库的应用2、maven中snapshot快照库和release发布库的区别和作用另外,今天在使用snapshot快照库时遇到一个问题,我一个构件的发布配置如下(在构件的pom文件中):1.<modelVersion>4.0.0</modelVersion>2.<groupId>cc.mzone</groupId>3.<artifactId>workflow</artifactId>4.<version>0.1-SNAPSHOT</version>5.<packaging>jar</packaging>6.<distributionManagement>7.<repository>8.<id>kt</id>9.<url>http://192.168.1.112/nexus/content/repositories/kt </url>10.</repository>11.<snapshotRepository>12.<id>kt-snapshot</id>13.<url>http://192.168.1.112/nexus/content/reposit ories/kt-snapshot</url>14.<uniqueVersion>true</uniqueVersion>15.</snapshotRepository>16.</distributionManagement>这个是构件的发布配置,其中snapshot快照库中使用了uniqueVersion为true,这个表明每次发布都会在服务器上留下一个新版本(加上时间后缀的版本)。

Maven有哪些优点和缺点

Maven有哪些优点和缺点⼀、Maven有哪些优点和缺点优点如下:1. 简化了项⽬依赖管理:2. 易于上⼿,对于新⼿可能⼀个"mvn clean package"命令就可能满⾜他的⼯作3. 便于与持续集成⼯具(jenkins)整合4. 便于项⽬升级,⽆论是项⽬本⾝升级还是项⽬使⽤的依赖升级。

5. 有助于多模块项⽬的开发,⼀个模块开发好后,发布到仓库,依赖该模块时可以直接从仓库更新,⽽不⽤⾃⼰去编译。

6. maven有很多插件,便于功能扩展,⽐如⽣产站点,⾃动发布版本等缺点如下:1. maven是⼀个庞⼤的构建系统,学习难度⼤2. maven采⽤约定优于配置的策略(convention over configuration),虽然上⼿容易,但是⼀旦出了问题,难于调试。

3. 当依赖很多时,m2eclipse ⽼是搞得Eclipse很卡。

4. 中国的⽹络环境差,很多repository⽆法访问,⽐如google code, jboss 仓库⽆法访问等。

⼆、Maven坐标⼀般maven使⽤[groupID,artifactId,version,packaging]来表⽰⼀个项⽬的某个版本,有时还会使⽤classifier来表⽰项⽬的附属构建,常见的附属构建有javadoc和sources包。

三、Maven常见的依赖范围有哪些?1. compile:编译依赖,默认的依赖⽅式,在编译(编译项⽬和编译测试⽤例),运⾏测试⽤例,运⾏(项⽬实际运⾏)三个阶段都有效,典型地有spring-core等jar。

2. test:测试依赖,只在编译测试⽤例和运⾏测试⽤例有效,典型地有JUnit。

3. provided:对于编译和测试有效,不会打包进发布包中,典型的例⼦为servlet-api,⼀般的web⼯程运⾏时都使⽤容器的servlet-api。

4. runtime:只在运⾏测试⽤例和实际运⾏时有效,典型地是jdbc驱动jar包。

Maven 在企业项目中的使用


搜索构件
搜索构件
� 一旦你的Nexus拥有了本地或者远程仓库的索引 文件,你就可以享受Nexus的构件搜索功能了。 不论登陆与否,你都可以使用关键字进行模糊搜 索,比如我 在左边导航栏上部的搜索框内输入 junit,然后点击搜索按钮,右边立刻会分页显示 500多条的junit相关构件信息。如果你了解更多的 信息,你也可以 通过限定groupId,artifactId, version进行搜索,点击导航栏中的“Advanced Search”,点击右边所有页面左上角的下拉框,选 择“GAV Search”。这里输入junit,然后回车:
配置Maven使用Nexus
� 默认情况下,Maven依赖于中央仓库,这是为了 能让Maven开箱即用,但仅仅这么做明显是错误 的,这会造成大量的时间及带宽的浪费。既然文 章的前面已经介绍了如何安装和配置Nexus,现 在我们就要配置Maven来使用本地的Nexus,以 节省时间和带宽资源。 � 我们可以将Repository配置到POM中,但一般来 说这不是很好的做法,原因很简单,你需要为所 有的Maven项目重复该配置。因此,这里我将 Repository的配置放到 $user_home/.m2/settings.xml中:
下载和安装
� Bundle方式安装 解压nexus-webapp-1.3.0-bundle.zip 至任意目录,如D:\java ,然后打开 CMD,cd至目录D:\java\nexus-webapp-1.3.4-bundle\bin\jsw\windows-x8632 ,运行InstallNexus.bat 。会在系统服务中出现nexus服务。
管理Maven仓库组
� 点击仓库列表中的“Public Repositories”,然后选择下方的 "Configuration" Tab,在配置面板中,将右边“Avaiable Repositories” 中的“Sonatype Repository”拖拽到左边的“Ordered Group Repository” 中,如图:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Maven2 的新特性键胡 (jianhgreat@), 西安交通大学硕士伟红胡, 工程师,IBM 区域合作伙伴支持中心, IBM简介:本文主要阐述 Maven2 的新特性,这些新特性可以大大地缩短了开发管理中的工作量,使得开发人员将精力集中在实际的业务问题上。

标记本文!发布日期: 2006 年 2 月 23 日级别:初级访问情况 410 次浏览建议: 0 (添加评论)平均分(共 0 个评分)Maven 出现到现在也有很长时间了,初识它的感觉至今仍清晰的印在脑海中。

现在想来,当时从 Ant 移情 Maven 的想法其实很朴素,就是因为 Maven 可以以网站的形式展现与项目相关的信息,如开发人员列表、各种 Report。

这种方式为项目的构建带来了极大的方便,尤其是 Report 的。

试想对于产生的Junit-Report、JavaDoc、CheckStyle、PMD 等报告,如果没有一个统一的入口,每次切换目录是多么令人厌烦的事情!Maven 无疑是相当成功的,这一点从越来越多的开源项目开始使用 Maven 就可以看出。

Maven 取得成功的原因很简单:在简化构建脚本的同时,功能并没有缩水,反而有所增强;提供汇集项目信息的工具,并以相当友好的方式呈现;丰富的插件简化了工作。

如此有力的工具出现,自然是争相使用。

新特性如今 Maven2 已经推出,Maven 的官方网站称,Maven2 相对于 Maven1 是一个相当大的转变,甚至不惜牺牲兼容性来达到这一目的。

(为了 Maven1 的用户着想,Maven1 仍在继续他的使命。

)如此大的变动到底换来了什么样的结果?1.更快、更简单比起 Maven1 那不急不慢的运行速度,Maven2在速度上有了质的飞跃,甚至与Ant相比也毫不逊色(当然,下载不算)。

除此之外,"简化工作,使用业界公认的最佳实践"也是是 Maven2 的另一大主题,其他的新特性无处不在体现Maven2 为简化工作而做出的努力。

2.更少的配置文件Maven1 和 Maven2 主要配置文件的对比:∙Maven1:project.xml、maven.xml、project.properties和build.properties。

∙Maven2:pom.xml和settings.xml。

POM是Maven的核心对象模型,在Maven2中POM已由project.xml转移到pom.xml 中使用,版本也由3升级为4。

对于项目,一般只需要pom.xml就行了。

在Maven2中不需要也不提倡使用maven.xml,原因如下:∙plugin的易用性的增强。

∙散布于maven.xml中的内容难以在不同项目间共享,也不利于维护。

在Maven2中建议使用自定义的plugin来封装这些内容。

如果仍期望能够使用类似maven.xml的功能,如<preGoal>,请参考Inserting non-standard build steps using preGoals and postGoals。

在Maven2中,配置使用settings.xml,它取代了原有的project.properties和build.properties。

配置在Maven2中存在两种级别:∙用户级,针对操作系统登录用户而言。

一般在$home/.m2/,对于windows 用户,就是目录:C:\Documents and Settings\用户名\.m2\settings.xml。

∙全局级:一般在%M2_HOME%/conf/settings.xml,M2_HOME是Maven2的根目录环境变量名。

在settings.xml中可以配置,如本地Repository、proxy等等,关于settings.xml的结构可以从Maven的官方网站上获取。

3. Plugin语言更换在Maven2中,编写plugin的语言由jelly变更为Java和BeanShell。

Java在速度上更有优势,而且开发人员的熟悉程度更高。

对于其他的流行脚本,如groovy,Maven的官方网站的意见是,等待其更成熟时再考虑。

4.提供预定义的目录模板好的目录结构可以使开发人员更容易理解项目,为以后的维护工作也打下良好的基础。

Maven2根据业界公认的最佳目录结构,为开发者提供了缺省的标准目录模板。

Maven2的标准目录结构如下:使用目录模板,可以使pom.xml更简洁。

因为Maven2已经根据缺省目录,预定义了相关的动作,而无需人工的干预。

以resources目录为例:∙src/main/resources,负责管理项目主体的资源。

在使用Maven2执行compile之后,这个目录中的所有文件及子目录,会复制到target/classes目录中,为以后的打包提供了方便。

∙src/test/resources,负责管理项目测试的资源。

在使用Maven2执行test-compile之后,这个目录中的所有文件及子目录,会复制到target/test-classes目录中,为后续的测试做好了准备。

这些动作在 Maven1 中,是需要在 maven.xml 中使用<preGoal>或<postGoal>来完成的。

如今,完全不需要在pom.xml中指定就能够自动完成。

在src和test 都使用resources,方便构建和测试,这种方式本就已是前人的经验。

通过使用Maven2,使这个经验在开发团队中得到普及。

创建标准目录模板,可以通过如下命令:mvn archetype:create -DgroupId=mons-DartifactId=codelineCommonsgroupId和artifactId的含义与Maven1中的含义一样,参数artifactId的值会作为项目根目录的名字。

除了建立相应的目录之外,Maven2还会创建缺省的pom.xml。

Maven2也考虑到:不同类型的项目需要拥有不同的目录结构。

如创建web项目,可以使用命令:mvn archetype:create -DgroupId=com.mycompany.app-DartifactId=my-webapp-DarchetypeArtifactId=maven-archetype-webapp5.生命周期的引入在Maven2中有了明确的生命周期概念,而且都提供与之对应的命令,使得项目构建更加清晰明了。

主要的生命周期阶段:∙validate,验证工程是否正确,所有需要的资源是否可用。

∙compile,编译项目的源代码。

∙test-compile,编译项目测试代码。

∙test,使用已编译的测试代码,测试已编译的源代码。

∙package,已发布的格式,如jar,将已编译的源代码打包。

∙integration-test,在集成测试可以运行的环境中处理和发布包。

∙verify,运行任何检查,验证包是否有效且达到质量标准。

∙install,把包安装在本地的repository中,可以被其他工程作为依赖来使用∙deploy,在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。

∙generate-sources,产生应用需要的任何额外的源代码,如xdoclet。

如果要执行项目编译,那么直接输入:mvn compile即可,对于其他的阶段可以类推。

阶段之间是存在依赖关系(dependency)的,如test依赖test-compile。

在执行mvn test时,会先运行mvn test-compile,然后才是mvn test。

6.新增Dependency Scope在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。

目前<scope>可以使用5个值:∙compile,缺省值,适用于所有阶段,会随着项目一起发布。

∙provided,类似compile,期望JDK、容器或使用者会提供这个依赖。

如servlet.jar。

∙runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。

∙test,只在测试时使用,用于编译和运行测试代码。

不会随项目发布。

∙system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

<scope>的使用举例:<dependency><groupId>hibernate</groupId><artifactId>hibernate</artifactId><version>3.0.3</version><scope>test</scope></dependency>7.传递依赖,简化依赖管理在Maven1中,需要把依赖所需要的包也一并列出。

这对于使用类似如Hibernate 的用户来说所操的心太多了,而且也不方便。

在Maven2中实现了传递依赖,如此对于Hibernate所依赖的包,Maven2会自动下载,开发人员只需关心Hibernate 即可。

注意:只有得到Maven支持的依赖,通常是plugin形式出现,才能获得这个特性。

而且对于一些老的plugin,可能由于时间的关系不支持传递依赖。

如至少在Maven 2.0.1中,对于Hibernate 2.1.2,仍然需要显式列出Hibernate 2.1.2所依赖的包。

回页首使用简介安装Maven2的步骤非常简单:首先从Maven官方网站下载相应的软件包,目前是Maven 2.0.1;然后解压,并设置环境变量M2_HOME= Maven2的解压安装目录;最后将%M2_HOME%/bin添加到path中,方便Maven在任何目录下运行。

Maven2的运行命令是mvn,使用mvn -h可以获得相关的帮助信息。

常用情形:∙创建Maven项目:mvn archetype:create∙编译源代码:mvn compile∙编译测试代码:mvn test-compile∙运行测试:mvn test∙产生site:mvn site∙打包:mvn package∙在本地Repository中安装jar:mvn install∙清除产生的项目:mvn clean或许是由于刚刚推出的缘故,Maven2目前还是有一些不尽如人意的地方。

尤其是Report部分的plugin,有的是因为目前还没有,如junit-report。

有的则是一些莫名其妙的问题,如checktyle和pmd,在本地locale下都无法正常工作。

相关文档
最新文档