使用Buildship在Eclipse中分级项目依赖关系



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

我将我的gradle项目导入Eclipse。导入之前不存在.project.classpath文件。成功导入所有模块。但几乎每一个使用java代码的项目都错过了依赖项,并显示为红色";X〃;。

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

渐变->刷新项目没有帮助。

以这种方式在根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解决这个问题吗?

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

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

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

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

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

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

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

官方bug跟踪器上的Guys告诉我,有了2.12级,现在可以使用compileOnly作用域,默认情况下也可以连接到Eclipse。

相关内容

  • 没有找到相关文章

最新更新