Java Maven项目已编译,但工作区中缺少导入
我正在使用带有m2e插件的EclipseKepler,我想修改一个maven项目并编译它。我首先使用Java Maven项目已编译,但工作区中缺少导入,java,eclipse,maven,dependencies,m2e,Java,Eclipse,Maven,Dependencies,M2e,我正在使用带有m2e插件的EclipseKepler,我想修改一个maven项目并编译它。我首先使用Configure->Convert to maven project将其转换为一个maven项目,但仍然有许多缺少的导入。当我使用运行为…->Maven安装项目编译 如何修复丢失的导入?告诉m2e更新项目:项目的上下文菜单/Maven/update project 然后,m2e将再次读取POM,更新类路径并再次构建项目 确保您的.classpath文件中有以下内容: <classpathe
Configure->Convert to maven project
将其转换为一个maven项目,但仍然有许多缺少的导入。当我使用运行为…->Maven安装
项目编译
如何修复丢失的导入?告诉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版本,实际语法可能略有不同
另一个常见的陷阱是提供的范围:
已提供
这与编译非常相似,但表示您希望JDK或容器在运行时提供依赖关系。例如,在为Java Enterprise Edition构建web应用程序时,您可以将Servlet API和相关Java EE API的依赖关系设置为提供的范围,因为web容器提供了这些类。此范围仅在编译和测试类路径上可用,并且不可传递
注意最后一部分:不可传递
这意味着您依赖于POM A,它说“我需要X:Y:Z,提供的范围”。您的项目将看到此依赖项,但它根本不在类路径上
若要解决此问题,请将依赖项复制到具有相同作用域的项目中(提供的)。在POM中使用哪些作用域?在哪里可以看到这些作用域?运行mvn帮助:有效的POM
并搜索
。不要忘记命令行上的引号,否则
会导致问题。Aaron Digulla:每个依赖项都有compile
您在项目中的“Maven依赖项”下看到依赖项了吗?