繁体   English   中英

m2eclipse将JDK合规性设置为1.4

[英]m2eclipse sets JDK compliance to 1.4

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

它应该遵循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>

(即使如此线程所述 ,它也不适用于aspect-j)

这个帖子让我们想起了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参数。

JDK合规级别来自 maven项目,而不是相反。 换句话说,您需要配置maven编译器插件以达到1.6级合规性,然后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是master,而不是m2eclipse。

总之,我做了一个mvn eclipse: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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM