Maven jar依赖项显示在“Maven依赖项”视图之外

时间:2015-06-24 15:54:53

标签: java eclipse spring maven m2e

我最近开始开发一个Spring MVC maven项目。从运行配置运行mvn eclipse:eclipse命令后,所有maven依赖项都显示在项目外部,而不是在" Maven Dependencies"层次结构视图。当我将项目透视图从Java EE切换到Java时,依赖关系可以在Referenced Libararies下找到。

Screenshot

我的.project.classpath元数据文件内容。

有人知道如何在Maven Dependencies视图下显示所有广告?

2 个答案:

答案 0 :(得分:7)

我想,给出答案可能比写评论更好。

Maven Eclipse插件

假设您有以下项目目录:

/hello-world/
   +-- src/
   +-- pom.xml

现在,您在该目录中运行mvn eclipse:eclipse eclipsify 。这将创建一些元文件:

/hello-world/
   +-- src/
   +-- pom.xml
   +-- .project
   +-- .classpath

.project文件将包含带有语句

的注释行
  

NO_M2ECLIPSE_SUPPORT:M2Eclipse不支持使用maven-eclipse-plugin创建的项目文件。

.classpath将包含依赖项的条目,如下所示:

<classpathentry kind="var" path="M2_REPO/com/google/guava/guava/18.0/guava-18.0.jar" sourcepath="M2_REPO/com/google/guava/guava/18.0/guava-18.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/4.12/junit-4.12.jar" sourcepath="M2_REPO/junit/junit/4.12/junit-4.12-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar"/>

请注意,这些条目使用的是eclipse内部变量:M2_REPO,它指向您当地的maven存储库。所有这些条目都是简单的库条目。与将库添加到构建路径时相同。

如果您现在通过“现有项目导入工作区”将其导入,您将完全获得您描述的项目。库是简单的类路径条目。并且 - 更重要的是 - 它没有maven性质(它缺少小“M”图标)。这在.project文件中提到过。没有maven性质,你没有这个项目的一些有用和重要的功能。

Eclipse Maven插件

所以,让我们修复它。首先备份项目目录(如果出现任何问题)。

第一步是从eclipse中删除项目,而不是从硬盘中删除。所以只需在eclipse中删除它,但不要勾选“删除磁盘上的项目内容”。你还想拥有这个项目,不是吗?

步骤2:导航到项目目录并删除任何eclipse元文件(我已经告诉过你)。之后,您拥有与初始情况相同的项目目录。

步骤3:现在您可以使用“Existing Maven Projects”将此项目导入eclipse。浏览到包含项目的目录(可能是工作空间目录)并选择项目。

之后你会注意到这个项目现在具有maven性质。项目图标上有一个“M”图标。此外,您将在“Maven依赖关系”节点下看到所有库。

为什么会这样?让我们再看看元文件:

.project文件现在还包含以下行(等等):

<buildCommand><name>org.eclipse.m2e.core.maven2Builder</name></buildCommand>
<nature>org.eclipse.m2e.core.maven2Nature</nature>

.classpath现在还有以下条目:

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

M2E插件现在正在完成其余的工作。容易,不是吗?

答案 1 :(得分:0)

@Lucky关闭日食。做一个eclipse:从命令提示符清理并将项目作为Maven项目导入..(假设您在eclipse中安装了maven插件)。我认为这会显示出所需的方式。