【发布时间】:2012-04-28 19:59:29
【问题描述】:
我正在使用 STS 2.9.1(基于 Eclipse 3.7.2 构建)和与 STS (v1.0.200.20111228-1245) 捆绑在一起的 m2e 插件。
我在包含多个模块的 Eclipse 项目中缺少依赖项,或者我不完全理解它应该如何工作。
这是一个 Maven 项目。
在我的项目 > 属性 > Java 构建路径 > 库中,我有“Maven 依赖项”库,但它是空的(这就是问题所在)。
主 POM 没有任何依赖项,但其中声明了几个模块。
向模块的 POM 添加依赖项不会将其添加到“Maven 依赖项”库中(这是我的预期),并导致 Eclipse 在源文件中显示错误。
向主 POM 添加依赖项会将其添加到“MD”库中,但当然我不想将所有模块的依赖项添加到主 POM 中,只是为了将其添加到“MD”库中并添加每个依赖项到构建路径似乎不正确也不实用。
我试过了:
- 项目>清理,
- Maven > 更新依赖,
- Maven > 更新项目配置,
- 取消选中复选框:项目 > 属性 > Maven > 解决来自工作区项目的依赖项。
以上方法似乎都不起作用。
示例:
简化的项目结构:
- simple.project
- ...
- 示例模块
- ...
- pom.xml
- pom.xml
simple.project/pom.xml:
<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>simple.project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>sample-module</module>
</modules>
<dependencies>
<dependency><!-- This dependency is present in "MD" lib. -->
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
simple.project/sample-module/pom.xml:
<project ...>
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>simple.project</artifactId>
<groupId>test</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>test</groupId>
<artifactId>sample-module</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency><!-- I've expected this dependency also to appear in "MD" lib. -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
【问题讨论】:
-
没有您的 POM,我无法帮助您。请粘贴相关部分。也粘贴这个错误 Eclipse 向您显示。 (我假设您使用的是 m2e 1.0 或更高版本。)
-
我已经编辑了我的原始帖子,以便更好地描述我的问题。
-
Eclipse 中显示的错误无关紧要。它们是基本错误,说我的代码中引用的某些类从类路径中丢失(因为它们没有像我预期的那样添加到“MD”库中)。
-
compile范围的依赖项也不起作用吗? -
所有可能的范围都存在问题,不仅仅是测试。
标签: eclipse maven dependencies m2e