Maven 介绍(2)

Maven目录分析java

一般在安装Maven时,都会设置M2_HOME这个环境变量,M2_HOME指代了Maven的安装目录,下面是目录结构:shell

binapache

boot安全

lib服务器

LICENSE.txt框架

NOTICE.txteclipse

README.txtmaven

 

bin目录是?工具

1、该目录包含了mvn运行的脚本google

2mvn是基于UNIX平台的shell脚本,mvn.bat是基于Windows平台的bat脚本,命令行输入任何一条mvn命令时,实际上时在调用这些脚本,而后执行Java命令,是的maven的运行须要java的环境

3、该目录还包含了mvnDebugmvnDebug.bat两个文件,mvnDebugmvn有什么区别呢?打开文件查看之,二者基本上是同样的,只是mvnDebug多了一条MAVEN_DEBUG_OPTS配置,起做用就是在运行Maven时开启debug,以便调试Maven自己

4、该目录还包含m2.conf文件,这是classworlds的配置文件

5、包含文件mvnmvn.bat mvnDebug mvnDebug.batm2.conf

 

调试Maven自己?如何调试?

classworlds是干什么的?

 

boot目录是?

1、该目录只包含一个文件plexus-classworlds-2.2.3.jar

2plexus-classwords是一个类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以方便配置

3Maven使用该框架加载本身的类库

4、参考http://classworlds.codehaus.org/

 

conf目录是?

1、该目录包含了一个很是重要的settings.xml

2、修改该文件,就能在机器上全局地定制Maven的行为

3、通常咱们会将该文件复制到~/.m2/目录下(~表示当前用户目录),而后修改该文件,在用户范围定制Maven的行为

 

lib目录是?

1、该目录包含了全部Maven运行时须要的Java的类库

2Maven自己是分模块开发的,所以用户能看到诸如maven-core-3.0.jarmaven-model-3.0.jar之类的文件

3、此外还包含了第三方依赖,如common-cli-1.2.jargoogle-collection-1.0.jar

 

对于Maven2来讲lib目录有些不一样

1、该目录只包含一个如maven-2.2.1-uber.jar的文件

2、本来各为独立JAR文件的Maven模块和第三方类库都被拆解后从新合并到这个jar文件中

3用户能够在这个jar文件中找到Maven内置的超级POM         

 

LICENSE.txt文件是?

记录了Maven使用的软件许可证Apache.License Version 2.0

 

NOTICE.txt文件是?

记录了Maven包含的第三方软件

 

README.txt文件是?

包含了Maven的简要介绍,包括安装需求及如何安装简要指令等

 

很是有用的mvn help:system命令

1、该命令会打印出全部的Java系统属性环境变量

2、执行该命令Maven会下载maven-help-plugin,包括pom文件和jar文件,这些文件都被下载到了Maven本地仓库中

3、默认状况,能够到~/.m2/repository/org/apache/maven/plugins/maven-help-plugins/目录下找到刚才下载的maven-help-pluginpom文件和jar文件

 

~/.m2目录

1、默认状况下,该文件夹下放置了Maven本地仓库.m2/repository

2、全部的Maven构建都被存储到该仓库中,以方便重用

4、默认状况,~/.m2目录下除了repository仓库以外就没有其余目录和文件,不过大多数Maven用户须要复制M2_HOME/conf/settings.xml文件到~/.m2/settings.xml,这是一条最佳实践

 

设置HTTP代理

有时候你所在的公司基于安全因素考虑,要求你使用经过安全认证的带来访问因特网。这种状况下,你须要为Maven配置HTTP代理,才能让它正常访问外部仓库,如下载所须要的资源

 

如何设置HTTP代理

1、首先检查代理服务器是否能正常的访问

2、代理服务器的IP多是218.14.227.197 端口号为3128

编辑~/.m2/setting.xml文件,添加代理配置以下:

<setting>

       ...

       <proxies>

              <proxy>

                     <id>my-proxy</id>

                     <active>true</active>

                     <protocol>http</protocol>

                     <host>218.14.227.197</host>

                     <port>3128</port>

                     <!--

                     <username>XXX</username>

                     <password>XXX</password>

                     <nonProxyHosts>repository.mycom.com | *.google.com</nonProxyHosts>

                     -->

              </proxy>

       </proxies>

       ...

</setting>

配置说明:

1proxies下面能够配置多个proxy元素,若是声明多个proxy元素,则默认状况下第一个被激活的proxy会生效

2idmy-proxy的代理,active的值为true表示激活该代理,protocol表示使用代理协议为http,最重要的是正确的hostport,若是代理须要认证的话配置usernamepasswordnonPoxyHost元素用来指定哪些主机名不须要代理,可使用 "|" 符号来分个主机名,可使用通配符*.google.com

Eclipse很是优秀的IDE

Eclipse是一款很是优秀的IDE,除了基本的语法标亮、代码补齐、XML编辑等基本功能外,最新版本的Eclipse还能很好地支持重构,而且集成JUnitCVSMylyn等各类流行工具,惋惜Eclipse默认没有集成对Maven的支持,幸运的是,由Maven之父Jason Van Zyl创立的Sonatype公司创建了m2eclipse项目,这是Eclipse下的一款十分强大的Maven插件,

能够访问http://m2eclipse.sonatype.org/了解更多该项目的信息

 

安装m2eclipse

1、使用Eclipse Marketplace搜索m2eclipse下载Maven Integration for Eclipse(Luna and newer) 1.5

2m2eclipse的核心模块就是Maven Integration for Eclipse

3m2eclipse使用的开源许可证是Eclipse Public License v1.0

4、除了核心组件以外,m2eclipse还提供了一组额外的组件,主要是为了方便与其余工具如Subversion进行集成,这些组件的安装地址为http://m2eclipse.sonatype.org/sites/m2e-extras

 

简单介绍一下这些组件的用途

重要的:

1Maven SCM handler for Subclipse Optional):Subversion是很是流行的版本管理工具

该模块可以帮助咱们直接从Subversion服务器签出Maven项目,不过前提是须要首先安装Subclipse (http://subclipse.tigris.org/)

2Maven SCM Integration (Optional): Eclipse环境中MavenSCM集成核心的模块。它利用各类SCM工具如SVN实现Maven项目的签出和具体化等操做

不重要的:

3Maven issue tracking configurator for Mylyn 3.x (Optional):该模块可以帮助咱们使用POM中的缺陷跟踪系统信息连接Mylyn至服务器

4Maven SCM handler for Team/CVS (Optional):该模块帮助咱们从CVS服务器签出Maven项目,若是还在使用CVS,就须要安装它

5Maven Integration for WTP (Optional):使用该模块可让Eclipse自动读取POM信息并配置WTP项目

6M2Eclipse Extensions Development Support (Optional): 用来支持扩展m2eclipse,通常用户不会用到

7Project configurators for commonly used maven plugins (temporary):一个临时的组件,用来支持一些Maven插件与Eclipse的集成,建议安装。

以上的这些模块在http://m2eclipse.sonatype.org/sites/m2e-extras已经找不到了,若是想要安装指定的插件,本身在Eclipse marketplace本身搜索吧

 

如何在Eclipse中验证某个插件是否正确安装?

1、首先,单击菜单栏中的Help

2、而后选择About Eclipse,在弹出的对话框中,单击Installation Details按钮,会获得一个对话框

3、在Installed Software标签中,检查该模块是否在这个列表中

 

一个很是常见的错误

在安装Maven的时候,常常会出现一个这样的错误:

09-10-6 上午011449:Eclipse is running in a JRE, but a JDK is reuqired

Some Maven plugins may not work when importing projects or updating or updating source folders

这是由于Eclipse默认是运行在JRE上的,而m2eclipse的一些功能要求使用JDK

解决方法之一:将Eclipse默认运行的JRE改为咱们本身安装的JDK

 

安装NetBeans Maven插件

 

Maven安装的最佳实践

1、设置MAVEN_OPTS环境变量

2、配置用户范围settings.xml

3、不要使用IDE内嵌的Maven

 

设置MAVEN_OPTS环境变量干什么?

1、运行mvn命令实际上执行的是Java的命令,Java命令可用的参数也能够用在mvn命令

2、一般须要设置MAVEN_OPTS的值为-Xms138m -Xms512m,由于Java默认的最大可用内存每每不能知足Maven运行的须要,好比在项目较大时,使用Maven生成项目站点须要占用大量的内存,若是没有该配置,则很容易获得java.lang.OutOfMemeoryError

注意:尽可能不要修改mvn.bat或者mvn这两个Maven执行脚本,若是要升级Maven时不得再也不次修改,一来麻烦,二来容易忘记,同理也不要去修改任何Maven安装目录下的文件

 

settings.xml文件的一些说明

1Maven用户能够选择配置 M2_HOME/conf/settings.xml或者~/.m2/settings.xml,前者是全局范围的,整台机器上的全部用户都会直接受到该配置的影响,然后者是用户范围的,只有当前用户才会受到该配置的影响

2、推荐使用用户范围的settings.xml,主要是为了不无心识地影响到系统中的其余用户,若是有切实的需求,须要统一系统中全部用户的setting.xml配置,固然应该使用全局范围的setting.xml

3、配置用户范围的settings.xml文件还便于Maven的升级,直接修改conf目录下的settings.xml会致使Maven升级不便,每次升级到新版本的Maven,都须要复制settings.xml文件,若是使用~/.m2目录下的settings.xml,就不会影响到Maven安装文件,升级时就不须要触动settings.xml文件

 

为何不要使用IDE内嵌的Maven

不管Eclipse仍是NetBeans,当集成Maven时,都会安装上一个内嵌的Maven,这个内嵌的Maven一般会比较新,但不必定很稳定,并且每每也会和在命令行使用的Maven不是同一个版本

 

使用IDE内嵌的Maven会出现两个潜在的问题

1、较新版本的Maven存在不少不稳定因素,容易形成一些难以理解的问题

2、除了IDE,也常常还会使用命令行的Maven,若是版本不一致,容易形成构建行为的不一致,这是咱们所不但愿看到的。

因此应该在IDE中配置Maven插件时使用与命令行一致的Maven

相关文章
相关标签/搜索