2024年1月28日发(作者:)

第1章 Maven的客户端安装和配置

1.1 在Windows上安装Maven

1.1.1 检查JDK安装

在安装Maven之前,首先要确认你已经正确安装了JDK。Maven可以运行在JDK 1.4及以上的版本上。本书的所有样例都基于JDK 5及以上版本。打开Windows的命令行,运行如下的命令来检查你的Java安装:

C:UsersJet>echo %JAVA_HOME%

C:UsersJet>java -version

结果如图2-1所示:

图2-1 Windows中检查Java安装

上述命令首先检查环境变量JAVA_HOME是否指向了正确的JDK目录,接着尝试运行java命令。如果Windows无法执行java命令,或者无法找到JAVA_HOME环境变量。你就需要检查Java是否安装了,或者环境变量是否设置正确。

1.1.2 下载Maven

请访问Maven的下载页面:/

1.1.3 本地安装

将安装文件解压到你指定的目录中,如:

D:apache-maven-3.0.3

这里的Maven安装目录是D:apache-maven-3.0,接着需要设置环境变量,将Maven安装配置到操作系统环境中。

打开系统属性面板(桌面上右键单击“我的电脑”→“属性”),点击高级系统设置,再点击环境变量,在系统变量中新建一个变量,变量名为M2_HOME,变量值为Maven的安装目录D:apache-maven-3.0。点击确定,接着在系统变量中找到一个名为Path的变量,在变量值的末尾加上%M2_HOME%bin;,注意多个值之间需要有分号隔开,然后点击确定。至此,环境变量设置完成,详细情况如图2-2所示:

图2-2 Windows中系统环境变量配置

这里需要提一下的是Path环境变量,当我们在cmd中输入命令时,Windows首先会在当前目录中寻找可执行文件或脚本,如果没有找到,Windows会接着遍历环境变量Path中定义的路径。由于我们将%M2_HOME%bin添加到了Path中,而这里%M2_HOME%实际上是引用了我们前面定义的另一个变量,其值是Maven的安装目录。因此,Windows会在执行命令时搜索目录D:apache-maven-3.0bin,而mvn执行脚本的位置就是这里。

运行如下命令检查Maven的安装情况:

C:UsersJuven Xu>echo %M2_HOME%

C:UsersJuven Xu>mvn -v

运行结果如图2-3所示:

图2-3 Windows中检查Maven安装

第一条命令echo %M2_HOME%用来检查环境变量M2_HOME是否指向了正确的Maven安装目录;而mvn –version执行了第一条Maven命令,以检查Windows是否能够找到正确的mvn执行脚本。

1.1.4 设置maven本地仓库

仓库地址会默认下载到 C:UsersAdministrator.m2 下面 ,如果不想下到C盘 ,可以在maven 安装包里面的 conf文件夹下面的 文件里面加上

D:repository 就会下载到D:repositroy里面。

修改完成之后 进入DOS 窗口输入:mvn help:system 运行这条命令的就会下载maven-help-plugin,包括pom文件和jar文件,这些都会被下载到 maven的本地仓库

下载完之后 我们的把 apache-maven-3.0 里面的 文件复制到 本机的 .m2 文件夹下面 这样不直接修改 maven自带配置文件 有利于maven的升级。

然后打开 加上

nexus

*

10.10.10.137:8888/nexus/content/groups/public

第2章 Maven仓库管理器

2.1安装Nexus

2.1.1. 从Sonatype下载Nexus

你可以从找到关于Nexus的信息。要下载Nexus,访

问/downloads/。点击下载链接,下载适用于你平台的存档

文件。Nexus目前有ZIP和Gzip归档的TAR两种可用形式。

2.1.2. 安装Nexus

直接把解压文件 放到tomcat D:apache-tomcat-5.5.28webapps 下面启动tomcat就Ok啦

然后输入URL:localhost:8080/nexus。链

接,你应该看到如下

点击右上角的 log in 进行登录

默认的NEXUS用户名和密码是"admin" 和 "admin123"。

仓库管理器

2.1.3. 安装后检查单

Nexus带有默认的密码和仓库索引设置,它们都需要更改以满足你的安装需要(以及安

全)。安装完并运行了Nexus后,你需要确认你完成了下列任务:

开启远程索引下载

Nexus带有三个重要的代理仓库,有中央Maven仓库,Apache快照仓库,和

Codehaus快照仓库。它们中的每一个仓库都包含了数千(或数万)的构件,下载

每个仓库的所有内容是不切实际的。处于这个原因,大部分仓库维护了一个编录

了整个内容的Lucene索引,以提供快速和有效的搜索。Nexus使用这些远程索引

搜索构件,但是默认设置我们关闭了索引下载。要下载远程索引,

1. 点击view/Repositorites菜单下面的Repositories,更改三个代理仓库的

Download Remote Indexes为true。

2. 在每个代理仓库上右击然后选择Re-index。这会触发Nexus下载远程的索引文

件。

Nexus下载整个索引可能需要好几分钟,但是一旦你下载好之后,你就能够搜索

Maven仓库的所有内容了。

注意

Sonatype想要确信没有创建一个会在默认情况下对中央仓库造成大量拥挤的

产品。虽然大部分用户会想要开启远程索引下载,我们还是不想使之成为默

认设置,当数百万用户下载一个新版本的Nexus继而不断的下载这个21MB的

中央索引的时候,会制造对我们自己的拒绝服务攻击。如果你想要Nexus返

回全部的搜索结果,你就必须显式的开启远程索引下载。

2.2. 使用Nexus

2.2.1. 浏览仓库

Nexus最直接的用途之一就是浏览Maven仓库的结构。如果你点击Views菜单下的Browse

Repositories菜单项。 “浏览一个Nexus仓库”中的上面一半给你显示了带有

仓库类型和仓库状态的组列表和仓库列表。

仓库管理器

浏览一个Nexus仓库

当你浏览一个仓库的时候,你可以在任意一个文件上右击然后直接下载到你本地。这能

让你手工获取某个特定的构件,或者在浏览器中检查一个POM文件。

仓库管理器

364

2.2.2. 浏览组

Nexus包含排序好的仓库组,它们能让你通过一个单独的URL来暴露一系列的仓库。通

常情况下,一个组织会指向两个默认的Nexus组:Public Repositories组和Public

Snapshot Repositories组。很多最终用户不需要知道哪些构件来自哪个特定的仓库,

他们只需要能够浏览公共仓库组就可以了。为了支持这个用例,Maven允许你浏览一个

Nexus组的内容,它就像是一归并而来的树状的仓库。

2.2.3. 搜索构件

在左边的导航区域,紧靠放大镜有一个构件搜索输入框。要通过groupId或者

artifactId搜索一个构件,输入一些文本然后点击放大镜。输入字段"maven"然后点击

放大镜会产生“关键词为"maven"的构件搜索结果”的搜索结果。

在你找出你在要找的构件之后,你可以点击Download链接来下载这个构件。Nexus每次

为你显示50条结果,并且为你浏览其它搜索结果在底部提供了链接。如果你更喜欢看到

所有匹配构件的列表,你可以在搜索结果面板底部的下拉菜单中选择Fetch All。

除了通过一个groupId或者一个artifactId搜索,Nexus还有一个功能能让你通过校验和

来搜索一个构件。

2.2.4. 配置Maven使用Nexus

要使用Nexus,你需要配置Maven去检查Nexus而非公共的仓库。为此,你需要编辑在你

的~/.m2/文件中的mirror配置。首先,我们会演示如何配置Maven去检查

你的Nexus安装而非直接从中央Maven仓库获取构件。在我们覆盖了中央仓库并演示了

Nexus可以工作之后,我们会转回来,提供一个更实际的,包含发布版和快照版的配置

集合。

2.2.5. 使用Nexus中央代理仓库

要配置Maven去查阅Nexus而非中央Maven仓库,在你的~/.m2/文件中添加

...

Nexus

Nexus Public Mirror

10.10.10.137:8888/nexus/content/groups/public

central

...

在你将Nexus配置成所有仓库的镜像之后,Maven现在会从本地的Nexus安装查阅,而非

去外面查阅中央Maven仓库。如果对Nexus有一个构件请求,本地的Nexus安装会提供这

个构件。如果Nexus没有这个构件,Nexus会从远程仓库获取这个构件,然后添加至远程

仓库的本地镜像。

要测试Nexus如何工作的,从你的本地Maven仓库中删除一个目录,然后运行Maven构

建。如果你删除了~/.m2/repository/org,你会删除一大堆的依赖(包括Maven 插

件)。下次你运行Maven的时候,你应该看到如下的信息:

$ mvn clean install

...

Downloading:

10.10.10.137:8888/nexus/content/groups/public/...

3K downloaded

这个输出应该能让你相信Maven正和你本地的Nexus通讯,而非向外面的中央Maven仓

库获取构件。在你基于本地的Nexus运行过一些构建之后,你就可以浏览缓存在你本

地Nexus中的内容。登陆Nexus然后点击导航菜单的左边的构件搜索。在搜索框中输

入"maven",你应该能看到一些像下面的内容。

第三章 文件说明

xmlns:xsi="/2001/XMLSchema-instance"

xsi:schemaLocation="/POM/4.0.0

/maven-v4_0_">

4.0.0

packageName

webappName

war

1.1.2

ttplatform

应用开发平台对公司具有战略性意义,也是2012年公司的重点项目之一

scm:svn:10.10.10.1:29888/svn/TTPlatForm/1.0.0

scm:svn:10.10.10.1:29888/svn/TTPlatForm/tags/1.0.0

10.10.10.1:29888/svn/TTPlatForm/1.0.0

Hudson

/mvnbook

jet

Jet-liu

newjet-liu@

david

David-deng

david-deng@

zhong

Aaron-zhong

aaron-zhong@

sunlight

Sunlight-fang

sunlight-fang@

zentao

10.10.10.14:88/zentao/

UTF-8

UTF-8

1.6

-XX:MaxPermSize=384m -Xms512m -Xmx1024m

nexus-releases

ReleasesProxy

10.10.10.137:8888/nexus/content/repositories/releases/

nexus-snapshots

SnapshotsProxy

10.10.10.137:8888/nexus/content/repositories/snapshots/

junit

junit

4.9

test

core

3.3.0-v_771

compile

checkstyle

checkstyle

5.0

hsqldb

2.2.6

s

maven-deploy-plugin

2.7

webappName

maven-jetty-plugin

s

maven-surefire-plugin

2.9

true

tomcat-maven-plugin

10.10.10.137:8888/manager

/mycontext

s

maven-release-plugin

2.2.1

10.10.10.1:29888/svn/TTPlatForm/tags/

s

maven-source-plugin

2.1.2

attach-sources

verify

jar-no-fork

s

maven-javadoc-plugin

2.8

attach-javadocs

jar

s

maven-site-plugin

3.0

zh_CN

s

maven-javadoc-plugin

2.8

s

maven-checkstyle-plugin

2.8

src/main/config/tt_

s

maven-jxr-plugin

2.3

s

maven-pmd-plugin

2.6

s

maven-changelog-plugin

2.2

range

60

cobertura-maven-plugin

2.5.1