m2eclipse将JDK合规性设置为1.4

时间:2010-06-13 14:50:41

标签: eclipse maven-2 m2eclipse

使用eclipse 3.5,当我创建一个新的maven项目时,m2eclipse自动将J2SE1.4添加到库,将编译器合规性级别添加到1.4(项目属性> Java编译器)。 我的JRE系统库是1.6,我的默认编译器合规级别是1.6。我甚至没有安装1.4。 我可以让m2eclipse使用我的默认设置并阻止它修改项目设置吗?

3 个答案:

答案 0 :(得分:6)

应该遵循 maven-compiler-plugin 配置:

<build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>

(即使,如mentioned in this thread,它也不适用于方面-j)

This thread让我们想起了eclipse中m2eclipse和maven脚本之间的区别:

  

值得一提的是,这仅适用于m2eclipse根据pom.xml中的配置配置Eclipse工具(如JDT,AJDT和WTP)时的“开发模式”。这就是您通常编写和调试应用程序,运行单元测试(使用Run as ... / JUnit测试)或在Web应用程序服务器上运行(运行为... / Server应用程序)的方法。

     

但是,如果您使用Run as ... / Maven build ...,或者从Run / Debug菜单创建相应的启动配置,那么您可以选择用于启动Maven的JVM,并且您的所有编译器配置都将受到尊重与在命令行中遵守它的方式相同。

所以:

  <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-compiler-plugin</artifactId>
       <configuration>
         <verbose>true</verbose>
         <fork>true</fork>
         <executable><!-- path-to-javac --></executable>
         <compilerVersion>1.3</compilerVersion>
       </configuration>
     </plugin>
   </plugins>
  

m2e没有(也不能)使用外部java编译器,所以它只会忽略这些配置参数。 m2仅考虑源/目标maven-compiler-plugin参数。

答案 1 :(得分:4)

JDK合规级别来自maven项目派生,而不是相反。换句话说,您需要为1.6级合规性配置maven编译器插件,然后m2eclipse将在Eclipse下导出适当的设置:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.0.2</version>
  <configuration>
    <source>1.6</source>
    <target>1.6</target>
  </configuration>
</plugin>

pom.xml是主人,而不是m2eclipse。

答案 2 :(得分:0)

总之,我在项目上做了mvn eclipse:eclipse,在Eclipse中对项目进行了F5刷新,这正确地配置了Java合规性设置。

我的设置如下。使用开普勒。 Java 1.7在Eclipse中的首选项中配置为默认值(如前所述,似乎在遵循pom.xml中的任何内容时都会被忽略)。我在Eclipse中导入了一堆Maven项目。所有都显示为Java合规性级别1.4,甚至项目的构建路径列出了Java 1.4运行时。通过在命令行上请求有效的pom来确认设置是否存在并在pom中更正,我仔细指定了在pom.xml中正确指定的1.7:

mvn help:effective-pom -Doutput=eff.xml

这表明存在正确的设置:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <fork>true</fork>
    </configuration>
</plugin>

猜测问题是m2e插件的导入部分,Eclipse中显示的版本是: 1.4.0.20130601-0317