0

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

eclipse {
    project {
        natures 'org.eclipse.jdt.core.javanature'
        buildCommand 'org.eclipse.jdt.core.javabuilder'
    }
    classpath {
        downloadSources true
        downloadJavadoc true
    }
}

我有一个多项目 gradle 构建,其中项目相互引用和第 3 方库。对于projectA,它的依赖关系是:

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

    compile "com.google.guava:guava:${VER_GUAVA}"
}

这很好用,除了生成的项目不相互引用。它构建得很好,但这意味着如果我重构 in 中的某些内容,则不会重构 in 中的projectB引用projectA。修复显然是设置配置的referencedProjects变量eclipse,但我希望根据依赖关系自动填充它。就像是:

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

有人有任何提示吗?

4

1 回答 1

0

这就是我最终修复它的方式:

// 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)

可能应该提到我正在使用wuff插件,因为我在 OSGI 环境中,它在依赖项上做了一些技巧。这可能是我没有自动获得它的原因,但上面的代码片段很容易修复它。

于 2015-01-13T03:10:04.800 回答