有没有办法阻止m2e修改eclipse .classpath文件?

时间:2012-09-10 18:23:07

标签: java eclipse maven m2e

我正在将一些项目转换为Maven项目,但是m2e会改变我的.classpath JRE条目:

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
    </attributes>
</classpathentry>

为:

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
    </attributes>
</classpathentry>

这会导致一些错误,例如:

  

描述资源路径位置类型访问限制:类型   由于限制,无法访问WindowsPopupMenuSeparatorUI   必需的库C:\ Program   Files \ Java \ jdk1.6.0_20 \ jre \ lib \ rt.jar DottedJPopupMenuSeparator.java / acommons / src / com / ks / acommons / gui / lookandfeel line   10 Java问题

有什么方法可以让m2e不生成.classpath文件,或强制它使用工作区默认的JDK?

3 个答案:

答案 0 :(得分:3)

在我看来,Maven在这里帮助你。它迫使Eclipse使用严格的Java 1.6环境,并阻止您使用不属于标准发行版的库。

通常,此错误消息暗示您应该声明新的Maven依赖项,而不是依赖于(例如)JRE/lib/ext中存在的JAR文件。

答案 1 :(得分:0)

目前无法做到这一点,但可能会修复m2e bug 405661

截至今天(m2e 1.5.0.20140606-0033),您只能配置m2e以保留其他类路径条目,但它总是会破坏它自动生成的条目。这包括JRE的类路径条目,因此无法手动设置此条目并使其在m2e项目更新后继续存在。

答案 2 :(得分:0)

您需要将Maven配置为使用正确的JRE。

您正在做的是将Eclipse配置为使用某个JRE,现在您希望Maven使用相同的JRE。这不起作用,因为Maven将使用POM(pom.xml)来确定要使用的JRE。这是有道理的,因为Maven是一个在Eclipse之外运行的命令行工具。 m2e只是将Eclipse配置为与命令行中的Maven类似。正如你所看到的,Maven在这里控制,Eclipse不是!

要使两者相互协作,您需要配置Maven编译器插件,如下所示:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source> <!-- JRE version that you need -->
                <target>1.8</target>
            </configuration>
        </plugin>

这将告诉Maven你想要哪个JRE版本。现在,您可以在Eclipse首选项中配置匹配的JRE版本,m2e将配置Eclipse编译器以使用具有正确版本的版本。