【问题标题】:Maven Eclipse Plugin won't add Android support-v4 to build pathMaven Eclipse 插件不会将 Android support-v4 添加到构建路径
【发布时间】:2025-11-22 21:15:02
【问题描述】:

我正在使用带有 Eclipse ADT、m2e 和 android-maven-plugin 的 RoboGuice 开发一个项目。

我正在使用依赖于 android.support.v4.app.ListFragment 的 RoboListFragment 类,因此我在 pom.xml 中添加了以下依赖项

<dependency>
    <groupId>com.google.android</groupId>
    <artifactId>support-v4</artifactId>
    <version>r7</version>
    <scope>provided</scope>
</dependency>

尽管如此,eclipse 确实将该库添加到构建路径。 当我从命令行构建我的项目时,一切正常,但在 eclipse 中我收到以下错误消息:

android.support.v4.app.Fragment 类型无法解析。它是从所需的 .class 文件中间接引用的

我发现的唯一解决方法是将它作为外部 jar 添加到构建路径中,但随后 .classpath 引用了我自己的主目录。

【问题讨论】:

标签: android eclipse maven roboguice


【解决方案1】:

尝试删除

<scope>provided</scope>

在 Maven 中,这意味着 support-v4 将位于类路径中(请参阅 http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

【讨论】:

  • 删除 provided 有效。谢谢! (但我不确定这是一种干净的方式)
  • provided 表示应用程序期望容器(或其他类路径提供程序)为您包含该依赖项。因此 Maven(和 Eclipse)不会单独下载它。 provided 范围的典型用途是用于 Tomcat、WebLogic 或其他应用程序服务器提供的 Java EE 库之类的东西。
  • Maven 下载提供的工件。这些工件将仅用于编译,不会包含在最终包中,因为它们是由框架提供的(如您所说的 Tomcat 的 Servlet API)。 @dbellettini 如果这解决了您的问题,您应该接受答案。它使事情更容易阅读。
  • 似乎 Eclipse 不会看到任何 provided 依赖项,其 groupId 以 com.google.android 开头,尽管 Maven 构建正确