天天看點

Maven最佳實踐

一、在eclipse.ini中指定vm參數

Eclipse預設是運作在JRE上的,而m2eclipse的一些功能要求使用JDK,解決方法是配置Eclipse安裝目錄的eclipse.ini檔案,添加vm配置指向JDK,如:

--launcher.XXMaxPermSize 256m

-vm

D:\java\jdk1.6.0_07\bin\javaw.exe

-vmargs

-Dosgi.requiredJavaVersion=1.5

-Xms128m

-Xmx256m

二、設定MAVEN_OPTS環境變量

我們通常需要設定MAVEN_OPTS的值為:-Xms128m -Xmx512m,因為Java預設的最大可用記憶體往往不能夠滿足Maven運作的需要,比如在項目較大時,使用Maven生成項目站點需要占用大量的記憶體,如果沒有該配置,我們很容易得到java.lang.OutOfMemeoryError。是以,一開始就配置該變量是推薦的做法。

關于如何設定環境變量,請參考前面設定M2_HOME環境變量的做法,盡量不要直接修改mvn.bat或者mvn這兩個Maven執行腳本檔案。因為如果修改了腳本檔案,更新Maven時你就不得不再次修改,一來麻煩,二來容易忘記。同理,我們應該盡可能地不去修改任何Maven安裝目錄下的檔案。

三、配置使用者範圍settings.xml

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檔案。

四、不要使用IDE内嵌的Maven

無論是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 在Eclipse中使用外部Maven

NetBeans Maven插件預設會偵測PATH環境變量,是以會直接使用與指令行一緻的Maven環境。依次點選菜單欄中的工具→選項→其他→Maven标簽欄,你就能看到如圖2-15所示的配置:

Maven最佳實踐

 圖2-15 在NetBeans中使用外部Maven

五、maven warnning 'build.plugins.plugin.version' is missing

在pom.xml中添加新的dependency:

 <dependency>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>2.1</version>

<type>maven-plugin</type>

</dependency> 在build中添加:

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven.compiler.plugin</artifactId>

<configuration>

<source>1.5</source>

<target>1.5</target>

<verbal>true</verbal>

</configuration>

</plugin>

</plugins>

</build>

</project>

但是仍然有個錯誤,錯誤資訊:build.plugins.plugin.version

可以看到,在pom.xml裡面的<build>下面,沒有<version>。是以要多加一個version:

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven.compiler.plugin</artifactId>

<version>2.1</version>

<configuration>

<source>1.5</source>

<target>1.5</target>

<verbal>true</verbal>

</configuration>

</plugin>

</plugins>

</build>

</project>

好,解決問題。

六、如何去掉maven的[WARNING] Using platform encoding (UTF-8 actually) to copy filter

  1. <project>  
  2.   ...  
  3.   <properties>  
  4.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  5.   </properties>  
  6.   ...  
  7. </project>