10

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

4

3 回答 3

7

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

(即使,如this thread中所述,它不适用于aspect-j)

这个线程提醒我们关于 eclipse 中的 m2eclipse 和 maven 脚本之间的区别:

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

但是,如果您使用 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 参数。

于 2010-06-13T16:11:51.620 回答
4

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大师,不是m2eclipse。

于 2010-06-13T16:10:56.080 回答
0

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

我的设置如下。使用开普勒。Java 1.7 在 Eclipse 的首选项中配置为默认值(如前所述,似乎无论如何都会被忽略,以尊重 pom.xml 中的任何内容)。我将一堆 Maven 项目导入 Eclipse。所有这些都显示为 Java 合规级别 1.4,甚至项目的构建路径也列出了 Java 1.4 运行时。我通过在命令行上请求有效的 pom 来确认 pom.xml 中的设置是否存在并且在 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

于 2018-01-17T12:08:06.120 回答