【问题标题】:Gradle Project Dependencies in Eclipse with BuildshipEclipse 中的 Gradle 项目依赖项与 Buildship
【发布时间】:2016-08-06 14:52:46
【问题描述】:

我使用 Eclipse Mars.2 (4.5.2) 和 Buildship 1.0.14。 Gradle 版本是 2.12。

我将我的 gradle 项目导入 Eclipse。 导入前不存在 .project.classpath 文件。已成功导入所有模块。但是几乎每个使用 java 代码的项目都缺少依赖项并显示红色“X”。

如果您打开一个 java 文件出错,您会看到 Eclipse 无法解析导入。但是如果你按名称打开导入的类,它可以在其他模块的依赖中找到它。

Gradle -> 刷新项目没有帮助。

在根build.gradle中声明的必要依赖是这样的:

ext.library = [
    swagger: [
            [ group: "io.swagger", name: "swagger-annotations", version: "1.5.3" ],
            [ group: "io.swagger", name: "swagger-core", version: "1.5.3" ],
            [ group: "io.swagger", name: "swagger-jaxrs", version: "1.5.3" ]
    ]
]

在模块中我这样声明:

dependencies {
    providedCompile library.swagger
}

当您从命令行甚至从 Eclipse 执行 gradle build 时,构建成功。

可以在github 上找到重现此问题的小项目示例(感谢 RaGe 参与其中)。

您能帮我用 Eclipse 解决这个问题吗?

【问题讨论】:

标签: java eclipse gradle gradle-eclipse buildship


【解决方案1】:

参考您提供的代码示例here回答。

您没有使用 war 插件,而是声明了您自己的自定义配置,称为 providedCompile。 Gradle 和扩展,buildship/eclipse 不知道providedCompile 是什么意思。因此,您在 providedCompile 中列出的依赖项不会被用作编译时依赖项。

因此,您的导入语句成为编译时错误 - 无论是在 eclipse 中还是从带有 gradle build 的 gradle 命令行中

您可以通过以下方式将providedCompile 添加到编译类路径:

sourceSets.main.compileClasspath += [configurations.providedCompile]

如果你还在你的项目中添加了eclipse插件,你可以修改eclipse编译类路径:

eclipse {
  classpath {
    plusConfigurations += [configurations.providedCompile]
  }
}

【讨论】:

  • 添加eclipse插件和配置解决了,谢谢!
  • 太棒了!您也应该考虑对答案进行投票。
【解决方案2】:

官方错误跟踪器上的人告诉我,现在可以使用 gradle 2.12 的 compileOnly 范围,默认情况下它也连接到 Eclipse。

【讨论】:

    猜你喜欢
    • 2017-04-05
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    相关资源
    最近更新 更多