Maven项目编译但工作区中缺少导入

时间:2013-08-26 13:42:25

标签: java eclipse maven dependencies m2e

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

如何修复丢失的导入?

1 个答案:

答案 0 :(得分:3)

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

然后,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 Enterprise Edition构建Web应用程序时,您可以将Servlet API和相关Java EE API的依赖关系设置为提供的范围,因为Web容器提供了这些类。此范围仅在编译和测试类路径中可用,并且不可传递。

请注意最后一部分:not transitive

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

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

相关问题