Maven安装最佳实践
1. 设置MAVEN_OPTS环境变量
通过之前的学习,我们已经知道,运行mvn命令实际上是执行了java命令,既然是运行java,那么运行java命令可用的参数当然也应该在运行mvn命令时可用,这个时候MAVEN_OPTS环境变量就能派上用场。
通常需要设置MAVEN_OPTS的值为-Xms128m -Xmx512m,因为Java默认的最大可用内存往往不能满足Maven运行的需要,比如在项目较大时,使用Maven生成的项目要占用大量的内存,如果没有该配置,则很容易导致内存溢出,即java.lang.OutOfMemeoryError。因此一开始就配置该变量是推荐的做法。
win7下设置方法跟配置M2_HOME的方式类似,但是这次是创建用户级的环境变量,如下图所示:
上述部分是书中记载的方式,但是经过本人查询多方资料后,发现似乎并不能起到相对应的作用,在一篇博文中有写到这么一句话:“原来是Maven的 maven-surefire-plugin 插件默认会fork出一个新的jvm去跑unit test, 所以上面设置的MAVEN_OPTS 并不会对surefire插件新开的jvm起作用。”
博文中贴上了外文连接: [StackOverFlow](http://stackoverflow.com/questions/4066424/java-lang-outofmemoryerror-java-heap-space-in-maven "外文地址")
本人亲自去查看了下,发现该回答的时间是2010-11-02日,距离现在已经过去很久,但是本人初学Maven,对Maven的理解不是很深入因此,把该篇内容中提供的方法贴出来供大家参考。
该文中提到的两个方法,比较正确的做法是第二个也就是在pom文件中添加<configuration>元素,添加如下:
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<argLine>-Xmx1024m</argLine>
</configuration>
</plugin>
</plugins>
</build>
同时本人也将最近的比较有用的回答贴出来:
希望上述资料能够为你提供一些帮助。
2. 配置用户范围的settings.xml
Maven用户可以选择配置M2_HOME/conf/settings.xml或者用户目录下.m2/settings.xml。前者是全局范围的,整台机器上所有用户都直接受到该配置的影响,同时在Maven进行升级的时候也是需要迁移M2_HOME/conf/settings.xml文件的。而后者是只有当前用户才会受到该配置的影响。
当这两个文件同时存在的时候,那么对于相同的配置信息用户家目录下面的settings.xml中定义的会覆盖Maven安装目录下面的settings.xml中的定义。
因此配置用户范围的settings.xml文件方便于Maven的升级,否则每次都要复制M2_HOME/conf/settings.xml文件是非常不方便的。
3. 不要使用IDE内嵌的Maven
无论是Eclipse还是NetBeans,当集成Maven时,都会安装上一个内嵌的Maven,这个内嵌的Maven通常会比较新,但不一定稳定,而且往往也会和在命令行使用的Maven不是同一个版本。这样会出现两个潜在的问题:
首先,较新的版本Maven存在很多不稳定的因素,容易造成一些难以理解的问题;其次,出了IDE,也经常还会使用命令行的Maven如果版本不一致,容易造成构建行为的不一致,这是我们所不希望看到的。因此,应该在IED中配置Maven插件时使用与命令行一致的Maven。
在m2eclipse环境中停用内嵌的Maven,使用本地安装的Maven是比较好的方式,操作如下:
配置本地Maven到IDE中:
点击Add按钮,选择Maven的安装路径之后点击Finish:
勾选本地的Maven,点击OK即可:
至此本地Maven配置完成。