Gradle with Eclipse - 多个源集时不完整的.classpath

时间:2013-06-11 15:25:45

标签: gradle gradle-eclipse

我有一个gradle构建脚本,其中包含一些源集,这些源集都定义了各种依赖项(一些常见,一些没有),我正在尝试使用Eclipse插件让Gradle生成.project和{ Eclipse的{1}}文件,但我无法弄清楚如何将所有依赖项输入到.classpath;由于某种原因,实际上很少有外部依赖项被添加到.classpath,因此Eclipse构建失败并出现1400错误(使用gradle构建工作正常)。

我已经定义了我的源集:

.classpath

由于我没有使用sourceSets { setOne setTwo { compileClasspath += setOne.runtimeClasspath } test { compileClasspath += setOne.runtimeClasspath compileClasspath += setTwo.runtimeClasspath } } dependencies { setOne 'external:dependency:1.0' setTwo 'other:dependency:2.0' } 源代码集,我认为这可能与它有关,所以我添加了

main

但这没有帮助。

我无法弄清楚所包含的库的任何常见属性,或者那些没有的库的常见属性,但是我找不到任何我确定的东西(尽管当然必须有)东西)。我有一种感觉,所有包含的库都是sourceSets.each { ss -> sourceSets.main { compileClasspath += ss.runtimeClasspath } } 源集的依赖关系,无论是直接还是间接,但是我还没有能够验证所有test的所有依赖关系。在那里。

如何确保将所有源代码集的依赖关系放入test

3 个答案:

答案 0 :(得分:2)

这是以与我昨天问过的similar question密切相关的方式解决的:

// Create a list of all the configuration names for my source sets
def ssConfigNames = sourceSets.findAll { ss -> ss.name != "main" }.collect { ss -> "${ss.name}Compile".toString() }
// Find configurations matching those of my source sets
configurations.findAll { conf -> "${conf.name}".toString() in ssConfigNames }.each { conf ->
    // Add matching configurations to Eclipse classpath
    eclipse.classpath {
        plusConfigurations += conf
    }
}

更新:

我也asked the same question in the Gradle forums,并得到了更好的解决方案:

eclipseClasspath.plusConfigurations = configurations.findAll { it.name.endsWith("Runtime") }

它不那么准确,因为它添加了其他东西,而不仅仅是来自我的源集的东西,但它保证它可以工作。它在眼睛上更容易=)

答案 1 :(得分:2)

我同意Tomas Lycken,最好使用第二种选择,但可能需要小幅修正:

eclipse.classpath.plusConfigurations = configurations.findAll {it.name.endsWith(“Runtime”)}

答案 2 :(得分:1)

这对Gradle 2.2.1来说非常有用:

eclipse.classpath.plusConfigurations = [configurations.compile]