qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

maven的安装配置

2.1 在windows上安装maven
先检查JDK 
Maven是一个java工具,所以请确保jdk环境已经正确安装在你的机器上。 

首先,请在此下载Maven。这里选择的是apache-maven-2.2.1-bin.zip 

window 7 

1.解压apache-maven-2.2.1-bin.zip 到你想要安装的目录。这里我们假设你选择了 C:\Program Files\Apache Software Foundation.压缩档案将会创建子目录apache-maven-2.2.1 

2.右键单击 计算机—>属性—>高级系统设置—>环境变量 在用户环境变量中 新建 M2_HOME 变量,值为 C:\Program Files\Apache Software Foundation\apache-maven-2.2.1 

3.继续新建 M2 变量,值为 %M2_HOME%\bin 

4.可选:继续新建 MAVEN_OPTS 变量,值为 -Xms256m -Xmx512m,指定jvm的运行参数。 

5.在环境变量path中追加 %M2% 

6.确定环境变量JAVA_HOME指向JDK的安装目录。例如 C:\Program Files\Java\jdk1.5.0_02并且环境变量path中有%JAVA_HOME\bin. 

7.打开一个新的命令行窗口,执行mvn --version 检查maven是否安装成功。成功安装后,输出类似如下: 

Apache Maven 2.2.1 (r801777; 2009-08-07 03:16:01+0800) 
Java version: 1.6.0_17 
Java home: C:\Program Files\Java\jdk1.6.0_17\jre 
Default locale: zh_CN, platform encoding: GBK 
OS name: "windows 7" version: "6.1" arch: "x86" Family: "windows" 

完整的安装指南可参见 Maven安装指南 


2.2. 在linux 安装maven
2.进入下载文件夹,找到下载的文件,运行如下命令解压
tar -xvf  apache-maven-2.2.1-bin.tar.gz

解压后的文件夹名为apache-maven-3.0.3

3.使用mv命令将apache-maven-3.0.3文件夹拷贝到自己指定的文件夹,比如/usr/local/下
mv -rf apache-maven-3.0.3 /usr/local/

4.配置环境变量,编辑/etc/profile文件,添加如下代码
MAVEN_HOME=/usr/local/apache-maven-3.0.3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

5.保存文件,并运行如下命令使环境变量生效
source /etc/profile

6.在控制台输入如下命令,如果能看到Maven相关版本信息,则说明Maven已经安装成功
mvn -v
2.3 maven  安装目录分析

1.M2_HOME

前面讲到设置M2_HOME环境变量指向maven的安装目录,本书之后所有使用M2_HOME的地方都指代了该安装目录。下面看一下该目录的结构和内容:

bin

boot

conf

lib

LICENSE.txt

NOTICE.txt

README.txt

 

bin目录:

该目录包含了mvn运行的脚本,这些脚本用来配置java命令,准备好classpath和相关的java系统属性,然后执行java命令。其中mvn是基于UNIX平台的shell脚本,mvn.bat是基于windows平台的bat脚本。在命令行输入任何一条mvn命令时,实际上就是在调用这些脚本。该目录还包含了mvnDebug和mvnDebug.bat两个文件,同样,前者是UNIX平台的脚本,后者是windows平台的脚本。那么mvn和mvnDebug有什么区别和关系呢?打开文件我们就可以看到,两者基本是一样的,只是mvnDebug多了一条MAVEN_DEBUG_OPTS配置,其作用就是在运行Maven时开启debug,以便调试Maven本身。此外,该目录还包含m2.conf文件,这是classworlds的配置文件,后面会介绍classworlds。

 

boot目录:

该目录只包含一个文件,以maven3为例,该文件为plexus-classworlds-xxx.jar。plexus-classworlds是一个类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以方便配置,maven使用该框架加载自己的类库。

 

conf目录:

该目录包含了一个非常重要的文件settings.xml。直接修改该文件,就能在机器上全局地定制maven的行为。一般情况下,我们更偏向于复制该文件至~/.m2/目录下(~表示用户目录),然后修改该文件,在用户范围定制maven的行为。后面将会多次提到settings.xml,并分析其中的各个元素。 

 

lib目录:

该目录包含了所有maven运行时需要的java类库,maven本身是分模块开发的,因此用户能看到诸如maven-core-3.0.jar,maven-model-3.0.jar之类的文件。此外,这里还包含一些maven用到的第三方依赖,如common-cli-1.2.jar,google-collection-1.0.jar等。对于maven2来说,该目录只包含一个如maven-2.2.1-uber.jar的文件,原本各为独立jar文件的maven模块和第三方类库都被拆解后重新合并到了这个jar文件中。可以说,lib目录就是真正的maven。

---

2.~/.m2

在用户目录下可以发现.m2文件夹。默认情况下,该文件夹下放置了maven本地仓库.m2/repository。所有的maven构件都被存储到该仓库中,以方便重用。默认情况下,~/.m2目录下除了repository仓库之外就没有其他目录和文件了,不过大多数maven用户需要复制M2_HOME/conf/settings.xml文件到~/.m2/settings.xml,以便定制。

maven3实战之设置HTTP代理


----------

 

有时候你所在的公司基于安全因素考虑,要求你使用通过安全认证的代理访问因特网。这种情况下,就需要为Maven配置HTTP代理,才能让它正常访问外部仓库,以下载所需要的资源。首先确认自己无法直接访问公共的maven中央仓库,直接运行命令ping repo1.maven.org可以检查网络。如果真的需要代理,先检查一下代理服务器是否畅通。比如现在有一个IP地址为218.14.227.197,端口为3128的代理服务,我们可以运行telnet 218.14.227.197 3128来检测该地址的该端口是否畅通。如果得到出错信息,需要先获取正确的代理服务信息,如果telnet连接正确,则输入ctrl+],然后q,回车,退出即可。

检查完毕之后,编辑~/.m2/settings.xml文件(如果没有该文件,则复制$M2_HOME/conf/settings.xml)。添加代理配置如下:

 

Xml代码  收藏代码
  1. <settings>  
  2.   ...  
  3.   <proxies>  
  4.     <proxy>  
  5.       <id>my-proxy</id>  
  6.       <active>true</active>  
  7.       <protocol>http</protocol>  
  8.       <host>218.14.227.197</host>  
  9.       <port>3128</port>  
  10.       <!--  
  11.         <username>***</username>  
  12.         <password>***</password>  
  13.         <nonProxyHosts>  
  14.           repository.mycom.com|*.google.com  
  15.         </nonProxyHosts>  
  16.       -->  
  17.     </proxy>  
  18.   </proxies>  
  19.   ...  
  20. </settings>  

 

这段配置十分简单,proxies下可以有多个proxy元素,如果声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。这里声明了一个id为my-proxy的代理,active的值为true表示激活该代理,protocol表示使用的代理协议,这里是http。当然,最重要的是指定正确的主机名(host元素)和端口(port元素)。上述xml配置中注释掉了username,password,nonProxyHosts几个元素。当代理服务需要认证时,就需要配置username和password。nonProxyHost元素用来指定哪些主机不需要代理,可以使用"|"符号来分隔多个主机名。此外,该配置也支持通配符,如:*.google.com表示所有以google.com结尾的域名访问都不要通过代理。

 2.5 安装 maven eclipse 插件

1.工具下载: 
Eclipse4.2 jee版本(这里使用最新的Eclipse版本,3.7以上版本按照以下步骤都可以) 
下载地址:http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/juno/SR2/eclipse-jee-juno-SR2-win32.zip&mirror_id=1142 
Maven3.0.5版本下载地址: 
http://maven.apache.org/download.cgi 

2.maven配置 
maven下载后,需要配置环境变量,将maven解压后的bin目录配置到环境变量中,如下所示(我这里用的是3.0.4版本。并安装在D盘根目录下): 

 

配置完成,可打开命令行,输入mvn -v,如下图所示(出现版本信息,即表示配置成功): 

 

设置maven仓库位置: 



默认的maven仓库位置为:C:\Users\Administrator\.m2(其中Administrator为当前账号)。 

3.eclipse安装maven插件(由于eclipse安装插件有版本问题,所以这里建议eclipse3.7以上版本)。 
maven插件下载地址(由于附件超过10M,所以放到百度网盘上了): 
http://pan.baidu.com/share/link?shareid=370537&uk=3222190371 
只需要解压后,把links、myplugins文件夹放到eclipse安装目录下,如下图所示: 



并且修改links下的maven.link文件。指向myplugins目录即可。我的配置为: 
path=D:/work/eclipse/eclipse4.2/myplugins/maven 

重启eclipse(如果eclipse程序之前已启动)。 

选择Window-》Preferences-》选择Maven,如下图所示: 

 

选择“Installations”,点击“Add”添加maven目录,如下图所示: 

 

继续选择“User Settings”,配置maven的setting文件,如下图所示: 

 

这里选择maven安装目录下的conf/settings文件,如下图所示: 

 

至此,maven插件已经安装完成。 

4.查看maven的console: 
点击“Window-》Show View-》Console”,如下图所示: 

 
此时,eclipse的底部区域已经增加了Console的tab。需要切换到Maven的Console,如下图所示: 



maven 配置
2.7。1 设置 maven_opts 变量

前面介绍Maven安装目录时我们了解到,运行mvn命令实际上是执行了Java命令,既然是运行Java,那么运行Java命令可用的参数当然也应该在运行mvn命令时可用。这个时候,MAVEN_OPTS环境变量就能派上用场。

通常需要设置MAVEN_OPTS的值为-Xms128m -Xmx512m,因为Java默认的最大可用内存往往不能够满足Maven运行的需要,比如在项目较大时,使用Maven生成项目站点需要占用大量的内存,如果没有该配置,则很容易得到java.lang.OutOfMemeoryError。因此,一开始就配置该变量是推荐的做法。

关于如何设置环境变量,请参考前面设置M2_HOME环境变量的做法,尽量不要直接修改mvn.bat或者mvn这两个Maven执行脚本文件。因为如果修改了脚本文件,升级Maven时就不得不再次修改,一来麻烦,二来容易忘记。同理,应该尽可能地不去修改任何Maven安装目录下的文件。

配置setting.xml

maven2 比起maven1 来说,需要配置的文件少多了,主要集中在pom.xml和settings.xml中。
    先来说说settings.xml,settings.xml对于maven来说相当于全局性的配置,用于所有的项目。在maven2中存在两个 settings.xml,一个位于maven2的安装目录conf下面,作为全局性配置。对于团队设置,保持一致的定义是关键,所以 maven2/conf下面的settings.xml就作为团队共同的配置文件。保证所有的团队成员都拥有相同的配置。当然对于每个成员,都需要特殊的 自定义设置,如用户信息,所以另外一个settings.xml就作为本地配置。默认的位置为:${user.dir} /.m2/settings.xml目录中(${user.dir} 指windows 中的用户目录)。
    settings.xml基本结构如下:
   

xml 代码

 
  1. <settings xmlns="http://maven.apache.org/POM/4.0.0"  
  2.           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.           xsi:schemaLocation="http://maven.apache.org/POM/4.0.0  
  4.                                http://maven.apache.org/xsd/settings-1.0.0.xsd">  
  5.   <localRepository/>  
  6.   <interactiveMode/>  
  7.   <usePluginRegistry/>  
  8.   <offline/>  
  9.   <pluginGroups/>  
  10.   <servers/>  
  11.   <mirrors/>  
  12.   <proxies/>  
  13.   <profiles/>  
  14.   <activeProfiles/>  
  15. </settings>  

简单介绍一下几个主要的配置因素:
localRepository:表示本地库的保存位置,也就是maven2主要的jar保存位置,默认在${user.dir}/.m2/repository,如果需要另外设置,就换成其他的路径。
offline:如果不想每次编译,都去查找远程中心库,那就设置为true。当然前提是你已经下载了必须的依赖包。
Servers
   在POM中的 distributionManagement元素定义了开发库。然而,特定的username和pwd不能使用于pom.xml,所以通过此配置来保存server信息
 
xml 代码
 
  1. <servers>  
  2.    <server>  
  3.      <id>server001</id>  
  4.      <username>my_login</username>  
  5.      <password>my_password</password>  
  6.      <privateKey>${usr.home}/.ssh/id_dsa</privateKey>  
  7.      <passphrase>some_passphrase</passphrase>  
  8.      <filePermissions>664</filePermissions>  
  9.      <directoryPermissions>775</directoryPermissions>  
  10.      <configuration></configuration>  
  11.    </server>  
  12.  </servers>   

  • id:server 的id,用于匹配distributionManagement库id,比较重要。
  • username, password:用于登陆此服务器的用户名和密码
  • privateKey, passphrase:设置private key,以及passphrase
  • filePermissions, directoryPermissions:当库文件或者目录创建后,需要使用权限进行访问。参照unix文件许可,如664和775
Mirrors 
表示镜像库,指定库的镜像,用于增加其他库
 
xml 代码
 
  1. <mirrors>  
  2.    <mirror>  
  3.      <id>planetmirror.com</id>  
  4.      <name>PlanetMirror Australia</name>  
  5.      <url>http://downloads.planetmirror.com/pub/maven2</url>  
  6.      <mirrorOf>central</mirrorOf>  
  7.    </mirror>  
  8.  </mirrors>  

  • id,name:唯一的标志,用于区别镜像
  • url:镜像的url
  • mirrorOf:此镜像指向的服务id
Proxies 
此设置,主要用于无法直接访问中心的库用户配置。
 
xml 代码
 
  1. <proxies>  
  2.    <proxy>  
  3.      <id>myproxy</id>  
  4.      <active>true</active>  
  5.      <protocol>http</protocol>  
  6.      <host>proxy.somewhere.com</host>  
  7.      <port>8080</port>  
  8.      <username>proxyuser</username>  
  9.      <password>somepassword</password>  
  10.      <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>  
  11.    </proxy>  
  12.  </proxies>  

  • id:代理的标志
  • active:是否激活代理
  • protocol, host, port:protocol://host:port 代理
  • username, password:用户名和密码
  • nonProxyHosts: 不需要代理的host
Profiles 
  类似于pom.xml中的profile元素,主要包括activation,repositories,pluginRepositories 和properties元素
  刚开始接触的时候,可能会比较迷惑,其实这是maven2中比较强大的功能。从字面上来说,就是个性配置。
  单独定义profile后,并不会生效,需要通过满足条件来激活。
 repositories 和pluginRepositories 
 定义其他开发库和插件开发库。对于团队来说,肯定有自己的开发库。可以通过此配置来定义。
 如下的配置,定义了本地开发库,用于release 发布。
   
xml 代码
 
  1. <repositories>  
  2.         <repository>  
  3.           <id>repo-local</id>  
  4.        <name>Internal 开发库</name>  
  5.        <url>http://192.168.0.2:8082/repo-local</url>  
  6.           <releases>  
  7.             <enabled>true</enabled>  
  8.             <updatePolicy>never</updatePolicy>  
  9.             <checksumPolicy>warn</checksumPolicy>  
  10.           </releases>  
  11.           <snapshots>  
  12.             <enabled>false</enabled>  
  13.           </snapshots>  
  14.           <layout>default</layout>  
  15.         </repository>  
  16.       </repositories>  
  17.       <pluginRepositories>  
  18.     <pluginRepository>  
  19.     <id>repo-local</id>  
  20.     <name>Internal 开发库</name>  
  21.     <url>http://192.168.0.2:8082/repo-local</url>  
  22.     <releases>  
  23.             <enabled>true</enabled>  
  24.             <updatePolicy>never</updatePolicy>  
  25.             <checksumPolicy>warn</checksumPolicy>  
  26.     </releases>  
  27.     <snapshots>  
  28.     <enabled>false</enabled>  
  29.     </snapshots>  
  30.     <layout>default</layout>  
  31.     </pluginRepository>  
  32.     </pluginRepositories>  

releases, snapshots:每个产品的版本的Release或者snapshot(注:release和snapshot的区别,release一般是比较稳定的版本,而snapshot基本上不稳定,只是作为快照)

properties
  maven 的properties作为placeholder值,如ant的properties。
包括以下的5种类型值:
  1. env.X,返回当前的环境变量
  2. project.x:返回pom中定义的元素值,如project.version
  3. settings.x:返回settings.xml中定义的元素
  4. java 系统属性:所有经过java.lang.System.getProperties()返回的值
  5. x:用户自己设定的值
Activation 
  用于激活此profile
 
xml 代码
 
  1. <activation>  
  2.         <activeByDefault>false</activeByDefault>  
  3.         <jdk>1.5</jdk>  
  4.         <os>  
  5.           <name>Windows XP</name>  
  6.           <family>Windows</family>  
  7.           <arch>x86</arch>  
  8.           <version>5.1.2600</version>  
  9.         </os>  
  10.         <property>  
  11.           <name>mavenVersion</name>  
  12.           <value>2.0.3</value>  
  13.         </property>  
  14.         <file>  
  15.           <exists>${basedir}/file2.properties</exists>  
  16.           <missing>${basedir}/file1.properties</missing>  
  17.         </file>  
  18.       </activation>  

  • jdk:如果匹配指定的jdk版本,将会激活
  • os:操作系统
  • property:如果maven能检测到相应的属性
  • file: 用于判断文件是否存在或者不存在

除了使用activation来激活profile,同样可以通过activeProfiles来激活
Active Profiles
表示激活的profile,通过profile id来指定。
 
xml 代码
 
  1. <activeProfiles>  
  2.     <activeProfile>env-test</activeProfile> 指定的profile id  
  3.   </activeProfiles> 

posted on 2014-03-04 15:50 顺其自然EVO 阅读(9248) 评论(0)  编辑  收藏 所属分类: maven


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜