使用Buildship在Eclipse中实现Gradle项目依赖性

时间:2016-04-14 20:36:03

标签: java eclipse gradle gradle-eclipse buildship

我将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的这个问题吗?

2 个答案:

答案 0 :(得分:2)

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

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

接下来你的import语句变成编译时错误 - 在eclipse和gradle命令行中都有gradle build

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

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

如果您还将eclipse插件添加到项目中,则可以使用以下命令修改eclipse编译类路径:

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

答案 1 :(得分:0)

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