使用Gradle中的依赖项设置EclipseProject.ReferencedProject

使用Gradle中的依赖项设置EclipseProject.ReferencedProject,gradle,gradle-eclipse,Gradle,Gradle Eclipse,我正在创建Eclipse项目文件,如图所示: eclipse { project { natures 'org.eclipse.jdt.core.javanature' buildCommand 'org.eclipse.jdt.core.javabuilder' } classpath { downloadSources true downloadJavadoc true } } 我有一个多项目的

我正在创建Eclipse项目文件,如图所示:

eclipse {
    project {
        natures 'org.eclipse.jdt.core.javanature'
        buildCommand 'org.eclipse.jdt.core.javabuilder'
    }
    classpath {
        downloadSources true
        downloadJavadoc true
    }
}
我有一个多项目的gradle构建,其中项目相互引用和第三方LIB。对于projectA,其依赖项为:

dependencies {
    compile project(':projectB')
    compile project(':projectC')

    compile "com.google.guava:guava:${VER_GUAVA}"
}
这非常有效,只是生成的项目彼此不引用。它构建得很好,但这意味着如果我在projectB中重构某些东西,projectA中的引用就不会被重构。修复显然是设置eclipse配置的referencedProjects变量,但我希望根据依赖项自动填充该变量。比如:

eclipse {
    project {
        referencedProjects dependencies.grep(dep is project)
        ...

有人有什么提示吗?

我就是这样解决的:

// add all project dependencies as referencedProjects
tasks.cleanEclipse.doLast {
    project.configurations.stream()
    .flatMap({config -> config.dependencies.stream()})      // get all deps
    .filter({dep -> dep instanceof ProjectDependency})      // that are Projects
    .forEach({dep -> eclipse.project.referencedProjects.add(dep.name)}) // and add to referencedProjects
}
// always create "fresh" projects
tasks.eclipse.dependsOn(cleanEclipse)

可能应该提到,我使用这个插件是因为我在一个OSGI环境中,它对依赖项有一些技巧。这可能是我无法自动获取此信息的原因,但上面的代码片段很容易修复它。

如果我在Eclipse中使用flat MulyProject模板创建一个新的Gradle项目,则会创建产品和我的库项目,其中产品通过Gradle编译依赖关系依赖于我的库。然而,当我将CoolLibniceMethod重命名为CoolLibbestMethod时,我认为它正确地完成了重构。不知道您的设置与模板中的设置有什么不同…您是指此处7.3.3中的模板吗?