1

我正在使用 eclipse Kepler 和 m2e 插件,我想修改一个 maven 项目并编译它。我首先将它转换为 maven 项目Configure -> Convert to maven project,但仍有许多缺失的导入。当我使用Run as... -> Maven install项目编译时。

如何修复丢失的导入?

4

1 回答 1

2

告诉 m2e 更新项目:项目的上下文菜单/Maven/更新项目...

然后 m2e 将再次读取 POM 并更新类路径并再次构建项目。

确保你的.classpath文件中有这个:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
    </attributes>
</classpathentry>

注意:根据您使用的 m2e 版本,实际语法可能略有不同。

另一个常见的陷阱是范围provided

provided
这很像compile,但表示您希望 JDK 或容器在运行时提供依赖项。例如,在为 Java 企业版构建 Web 应用程序时,您可以将 Servlet API 和相关 Java EE API 的依赖设置为提供的范围,因为 Web 容器提供了这些类。此范围仅在编译和测试类路径上可用,并且不可传递。

注意最后一部分:not transitive

这意味着您依赖于 POM A,它说“我需要 X:Y:Z,提供范围”。您的项目将看到这种依赖关系,但它根本不会在您的类路径中。

要解决此问题,请将依赖项复制到具有相同范围 ( provided) 的项目中。

于 2013-08-26T13:45:13.487 回答