<b>2.7maven安装最佳实践</b>
本节介绍一些在安装maven过程中不是必须的,但十分有用的实践。
<b>2.7.1设置maven_opts环境变量</b>
前面介绍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安装目录下的文件。
<b>2.7.2配置用户范围settings.xml</b>
maven用户可以选择配置$m2_home/conf/settings.xml或者~/.m2/settings.xml。前者是全局范围的,整台机器上的所有用户都会直接受到该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响。
推荐使用用户范围的settings.xml,主要是为了避免无意识地影响到系统中的其他用户。如果有切实的需求,需要统一系统中所有用户的settings.xml配置,当然应该使用全局范围的settings.xml。
除了影响范围这一因素,配置用户范围settings.xml文件还便于maven升级。直接修改conf目录下的settings.xml会导致maven升级不便,每次升级到新版本的maven,都需要复制settings.xml文件。如果使用~/.m2目录下的settings.xml,就不会影响到maven安装文件,升级时就不需要触动settings.xml文件。
<b>2.7.3不要使用ide内嵌的maven</b>
无论eclipse还是netbeans,当集成maven时,都会安装上一个内嵌的maven,这个内嵌的maven通常会比较新,但不一定很稳定,而且往往也会和在命令行使用的maven不是同一个版本。这里又会出现两个潜在的问题:首先,较新版本的maven存在很多不稳定因素,容易造成一些难以理解的问题;其次,除了ide,也经常还会使用命令行的maven,如果版本不一致,容易造成构建行为的不一致,这是我们所不希望看到的。因此,应该在ide中配置maven插件时使用与命令行一致的maven。
在m2eclipse环境中,单击菜单栏中的windows,然后选择preferences,在弹出的对话框中,展开左边的maven项,选择installation子项,在右边的面板中,能够看到有一个默认的embedded
maven安装被选中了。单击add...按钮,然后选择maven安装目录m2_home,添加完毕之后选择这一个外部的maven,如图2-14所示。图2-14在eclipse中使用外部maven
netbeans maven插件默认会侦测path环境变量,因此会直接使用与命令行一致的maven环境。依次单击菜单栏中的工具→选项→其他→maven标签栏,就能看到图2-15所示的配置。 图2-15在netbeans中使用外部maven