Maven 2 简明学习指南(1)
[@more@]MAVEN 2 简明使用说明
作者:不遗余力
1 前言
现在JAVA开发过程中,我们开发人员大都选择使用Ant来构建项目,因为Ant在项目构建中能够满足绝大多数开发人员的需要,但是另外的问题也同时存在,在开发大型系统时,Ant越来越不能满足我们在项目管理上的需求(如开发人员/拥有者、版本或站点主页等)。而且ANT构建文件的编写也是一个比较头痛的问题,虽然可以使用现有的Ant文件来改写,但是这也是一个很繁重的任务。有没有一种更好的,更简单更高效的工具来帮助我们呢?答案是肯定的,早期的Maven1就已经有很强的功能了,Maven 2(有时也被称为“m2”)完成了对Maven 1的重写。重写的首要目的是要提供了强大的Java构建和包含API的项目,允许Maven被植入任何地方,尤其是高级别的产品如IDEs、质量工具、报告工具等这些。Maven 2构建生命周期的概念正式话,其比Maven1更易扩展。可以在http://maven.apache.org 下载Maven 2的最新版本,更多的介绍可以在其官方介绍中找到。
2 MAVEN原理
2.1 Ant和Maven的区别:
作为构建工具,Maven和Ant一样,利用构建配置文件进行编译,打包,测试等操作。您可以用Maven自带的功能进行任何的操作,但前提是做好了相应的配置。当然,修改已有的模板来开始新的项目是个好方法。除非您在写特有的task,不然都会有target重用的问题。Maven进行了一些改进。您将项目配置内容写成XML文件,并且可以使用很多Maven自带的功能。另外还可以在Maven项目中调用任何Ant的task。
当然Ant和Maven也有很多相似之处。比如说,在两种情况下,XML 脚本都是可用的;两个
工具都可以生产工件;它们还可以共享相同的分类法和概念,比如:项目(project)、目标(target),以及 依赖关系(depends)和先决条件(Precondition)。但它们实质上有很大的差别。具体表现为:
Maven | Ant | |
标准构建文件 | project.xml 和 maven.xml | build.xml |
特性处理顺序 | ${maven.home}/bin/driver.properties ${project.home}/project.properties ${project.home}/build.properties ${user.home}/build.properties 通过 -D 命令行选项定义的系统特性 最后一个定义起决定作用。 | 通过 -D 命令行选项定义的系统特性 由 任务装入的特性 第一个定义最先被处理。 |
构建规则 | 构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。 | 构建规则或多或少是静态的,除非使用 任务。(请参阅 参考资料以获得相关教程。) |
扩展语言 | 插件是用 Jelly(XML)编写的。 | 插件是用 Java 语言编写的。 |
构建规则可扩展性 | 通过定义 和 使构建 goal 可扩展。 | 构建规则不易扩展;可通过使用 任务模拟 和 所起的作用。 |
Maven目前不足的地方就是没有象Ant那样成熟的GUI界面,不过mavengui正在努力中。目前使用Maven最好的方法还是命令行,又快又方便,基于Eclipse的插件也已经开始成熟了。
2.2 Maven的常见功能
l 编译源代码
l 产生Javadoc文档
l 运行unit测试
l 源代码文法分析
l 产生违反团队编码规范的详细报告
l 产生CVS最新提交报告
l 产生CVS更改最频繁的文件报告和提交最频繁的开发人员报告
l 产生可以交叉引用的HTML格式的源代码,等等。
Maven的功能是通过众多的插件来实现的,这样你可以只安装自己需要的插件(呵呵,现在什么都是基于插件的J)在Maven的网站上http://docs.codehaus.org/display/MAVEN/Maven+Plugin+Matrix 可以找到一个Maven插件列表。例如,创建EAR包和控制J2EE应用服务器的插件。
Maven的另外一个特色是利用中央构建资源库去访问您项目中需要的.jar(像Perl's CPAN)。您只用列出需要的.jar及相应版本,Maven会自动下载。当第一次运行Maven,或者运行一个新的goal时,可以在控制台上看到中央构建资源库下载.jar的详细过程。这一功能不仅使Maven更加容易使用,而且能帮您省下不少搜集维护本地或远程构建资源库中.jar版本的时间和精力。
Maven的易用性来源于配置过程的自然性。不仅提供了项目构建的基本步骤,还可以自定义项目对象模型(POM)。POM基于易于编辑的XML格式,由不同元素的名称和属性组
成。一旦您完成POM的配置,就可以在构造过程中使用很多Maven自带的激动人心的功能。
Maven也易于自定义,特别是当您已经熟悉Ant后。您可以增加新的功能或钩子到已有的构造过程以添加自定义的步骤。通过修改maven.xml文件可以添加自定义的功能。
3 MAVEN的使用
如何安装:
从apache网站上 http://maven.apache.org/download.html 下载最新的maven安装包,实际上就是个压缩文件。将其解压到你想要存放maven的目录中。在这里假设你将maven解压到d: maven-2.0.4中。
将d: maven-2.0.4bin设到你的系统环境变量%PATH%中。
同时确保你已经将你的JDK安装目录设为java_home系统变量。
打开个命令行窗口,运行mvn –version验证是否安装成功,出现Maven version: 2.0.4 恭喜你安装成功。
配置:
打开${maven.home}/conf下面的Setting.xml,为了大家对照方便,我只在原来的基础上更改,顺序按从上往下
配置本地Repository(储藏室)
<!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ~/.m2/repository --> E:/LoaclRepository/m2 |
其中E:/LoaclRepository/m2是本地Repository,这个必须时绝对路径。如果不改的话默认路径是在C:Documents and Settings%username%.m2下。其中%username%为操作系统登录用户名,这样不方便维护。
与用户的交互模式
<!-- interactiveMode | This will determine whether maven prompts you when it needs input. If set to false, | maven will use a sensible default value, perhaps based on some other setting, for | the parameter in question. | | Default: true true --> |
默认为true,当需要输入参数时Maven会提示用户输入参数,如果设置为false,则在遇到有输入参数时不会提示用户,Maven会自己生成一些参数,这样可能会出错,一般不需要改变默认设置。
是否连接互联网
<!-- offline | Determines whether maven should attempt to connect to the network when executing a build. | This will have an effect on artifact downloads, artifact deployment, and others. | | Default: false false --> |
当运行的时候,决定 Maven 是否尝试与网络建立连接。这样可能会对已有的本地储藏室中的自定义.jar文件产生影响,默认为false,一般不需要改。
配置代理服务器(如果你使用代理服务器上网的话)
<!-- proxies | This is a list of proxies which can be used on this machine to connect to the network. | Unless otherwise specified (by system property or command-line switch), the first proxy | specification in this list marked as active will be used. |--> <!-- proxy | Specification for one proxy, to be used in connecting to the network. | --> optional <!--代理服务器ID,可随意命名--> true <!-- 是否启用 --> http <!-- 通信协议 --> proxyuser <!-- 代理服务器用户名 --> proxypass <!-- 代理服务器密码 --> proxy.host.net <!-- 代理服务器主机地址 --> 80 <!-- 通信端口 --> |
其中proxy.host.net是你的代理服务器主机地址
展开我的项目到远程服务器
Pom文件:
<?xml version="1.0" encoding="UTF-8"?><project> <modelVersion>4.0.0modelVersion> <groupId>MyProjectgroupId> <artifactId>MyProjectartifactId> <version>0.0.1version> <description>description> <dependencies> <dependency> <groupId>junitgroupId> <artifactId>junitartifactId> <version>3.8version> dependency> <dependency> <groupId>tapestrygroupId> <artifactId>tapestryartifactId> <version>4.0-rc-3version> dependency> dependencies> mycompany-repository MyCompany Repository scp://repository.mycompany.com/repository/maven2 project> |
<!-- servers | This is a list of authentication profiles, keyed by the server-id used within the system. | Authentication profiles can be used whenever maven must make a connection to a remote server. |--> <!-- server | Specifies the authentication information to use when connecting to a particular server, identified by | a unique name within the system (referred to by the 'id' attribute below). | | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are | used together. | deploymentRepo repouser repopwd --> <!-- Another sample, using keys to authenticate. --> mycompany-repository jvanzyl <!-- Default value is ~/.ssh/id_dsa --> /path/to/identity (default is ~/.ssh/id_dsa) my_key_passphrase |
注意红色代码部分;
设置多个远程镜像
<!-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | --> ggi-project.org http://ftp.ggi-project.org/pub/packages/maven2 central planetmirror.com http://public.planetmirror.com/pub/maven2 central lsu.edu http://ibiblio.lsu.edu/main/pub/packages/maven2 central ibiblio.net http://www.ibiblio.net/pub/packages/maven2 central |
这样可以设置多个镜像,加快下载速度
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/618571/viewspace-828281/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/618571/viewspace-828281/