我正在使用 eclipse Kepler 和 m2e 插件,我想修改一个 maven 项目并编译它。我首先将它转换为 maven 项目Configure -> Convert to maven project
,但仍有许多缺失的导入。当我使用Run as... -> Maven install
项目编译时。
如何修复丢失的导入?
我正在使用 eclipse Kepler 和 m2e 插件,我想修改一个 maven 项目并编译它。我首先将它转换为 maven 项目Configure -> Convert to maven project
,但仍有许多缺失的导入。当我使用Run as... -> Maven install
项目编译时。
如何修复丢失的导入?
告诉 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
) 的项目中。