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