Maven 2 简明学习指南(1)

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 AntMaven的区别:

作为构建工具,MavenAnt一样,利用构建配置文件进行编译,打包,测试等操作。您可以用Maven自带的功能进行任何的操作,但前提是做好了相应的配置。当然,修改已有的模板来开始新的项目是个好方法。除非您在写特有的task,不然都会有target重用的问题。Maven进行了一些改进。您将项目配置内容写成XML文件,并且可以使用很多Maven自带的功能。另外还可以在Maven项目中调用任何Anttask

当然AntMaven也有很多相似之处。比如说,在两种情况下,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

构建规则或多或少是静态的,除非使用 任务。(请参阅 参考资料以获得相关教程。

扩展语言

插件是用 JellyXML)编写的。

插件是用 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

--&gt

E:/LoaclRepository/m2

其中E:/LoaclRepository/m2是本地Repository,这个必须时绝对路径。如果不改的话默认路径是在C:Documents and Settingsusername%.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

--&gt

默认为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

--&gt

当运行的时候,决定 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.

|--&gt

<!-- proxy

| Specification for one proxy, to be used in connecting to the network.

|

--&gt

optional <!--代理服务器ID,可随意命名--&gt

true <!-- 是否启用 --&gt

http <!-- 通信协议 --&gt

proxyuser <!-- 代理服务器用户名 --&gt

proxypass <!-- 代理服务器密码 --&gt

proxy.host.net <!-- 代理服务器主机地址 --&gt

80 <!-- 通信端口 --&gt

其中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.

|--&gt

<!-- 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

--&gt

<!-- Another sample, using keys to authenticate. --&gt

mycompany-repository

jvanzyl

<!-- Default value is ~/.ssh/id_dsa --&gt

/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.

|

--&gt

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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值