问题1:在eclipse3.6 Helios版本下, 安装的http://m2eclipse.sonatype.org/sites/m2e插件 。

使用依赖:

 
  
  1. <dependency> 
  2.             <groupId>com.alibaba.external</groupId> 
  3.             <artifactId>sun.jdk.tools</artifactId> 
  4.             <version>1.6.0</version> 
  5.             <scope>system</scope> 
  6.             <systemPath>${java.home}/../lib/tools.jar</systemPath> 
  7.         </dependency> 

 

问题:而eclipse的却给出了如下的提示:不存在D:\maven.repository\com\alibaba\external\sun.jdk.tools\1.6.0\sun.jdk.tools-1.6.0.jar

 
  
  1. Description Resource    Path    Location    Type 
  2. The container 'Maven Dependencies' references non existing library 'D:\maven.repository\com\alibaba\external\sun.jdk.tools\1.6.0\sun.jdk.tools-1.6.0.jar'   normandy.test-0.1.0-SNAPSHOT        Build path  Build Path Problem 

存在2点错误:

错误1:将java.home转移为找m2_home, 这是错误的

错误2:错误的理解scope为system的含义,system的准确含义如下:system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它

由此基本可以确定为m2e插件的bug。查询了m2e的bug库,处于open状态,具体参考:https://issues.sonatype.org/browse/MNGECLIPSE-2542

 

解决方案:使用mvn help:effective-pom -Doutput=ep.xml查看工程的依赖,显示为:

 
  
  1. <dependency> 
  2.       <groupId>com.alibaba.external</groupId> 
  3.       <artifactId>sun.jdk.tools</artifactId> 
  4.       <version>1.6.0</version> 
  5.       <scope>system</scope> 
  6.       <systemPath>D:\ProgramFiles\Java\jdk1.6.0_18\jre/../lib/tools.jar</systemPath> 
  7.     </dependency> 

此为对pom中该依赖的正确解析

 

问题2:

在eclipse3.3.1中使用Maven 2.0 integration插件时,m2e插件取得${java.home}存在问题。插件错误的将java.home认为是JAVA_HOME,产生了错误。

 
  
  1. System.out.println("JAVA_HOME: " + System.getenv("JAVA_HOME")); 
  2.         System.out.println("java.home: "+System.getProperty("java.home")); 

输出结果:

 
  
  1. JAVA_HOME: D:\ProgramFiles\Java\jdk1.6.0_18 
  2. java.home: D:\ProgramFiles\Java\jre6