Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse和Buildship中的Gradle项目依赖关系_Java_Eclipse_Gradle_Gradle Eclipse_Buildship - Fatal编程技术网

Java Eclipse和Buildship中的Gradle项目依赖关系

Java Eclipse和Buildship中的Gradle项目依赖关系,java,eclipse,gradle,gradle-eclipse,buildship,Java,Eclipse,Gradle,Gradle Eclipse,Buildship,我使用EclipseMars.2(4.5.2)和Buildship 1.0.14。Gradle版本是2.12 我将gradle项目导入Eclipse。 导入前不存在.project或.classpath文件。已成功导入所有模块。但几乎所有使用java代码的项目都缺少依赖项,并显示红色的“X” 如果打开一个有错误的java文件,您可以看到Eclipse无法解析导入。但是,如果您按名称打开导入的类,它可以在其他模块的依赖项中找到它 Gradle->Refresh项目没有帮助 根build.gradl

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

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

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

Gradle->Refresh项目没有帮助

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执行
gradlebuild
时,构建成功

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


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

请参考您提供的代码示例

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

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

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

sourceSets.main.compileClasspath += [configurations.providedCompile]
如果还将eclipse插件添加到项目中,则可以使用以下命令修改eclipse编译类路径:

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

官方bug追踪器上的家伙告诉我,gradle 2.12现在可以使用
compileOnly
作用域,默认情况下它也连接到Eclipse。

你使用的gradle版本是什么?你使用的是gradle war插件吗?gradle版本是2.12。是的,使用了war插件。无法使用eclipse mars 2和buildship 1.0.14复制。在新导入eclipse时,buildship下载了所有招摇过市的和可传递的依赖项,并且.RaGe,我能够修改您的示例来重现这个问题。通过添加eclipse插件和配置解决了这个问题,谢谢!伟大的你也应该考虑投票。