1

我将 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
}

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

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

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

4

2 回答 2

2

参考您在此处提供的代码示例进行回答。

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

因此,您的导入语句成为编译时错误 - 在 eclipse 和 gradle 命令行中gradle build

您可以providedCompile通过执行以下操作添加到编译类路径:

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

如果您还将 eclipse 插件添加到您的项目中,您可以修改 eclipse 编译类路径:

eclipse {
  classpath {
    plusConfigurations += [configurations.providedCompile]
  }
}
于 2016-04-15T15:43:08.730 回答
0

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

于 2016-04-15T17:42:11.110 回答