提问者:小点点

Gradle对不同项目源码集的依赖关系


我在一个多项目系统中工作(有40个子项目)。每个子项目都有自己的布局(大多数遵循共同的布局,但有些不同)。在子项目中,我有以下两个:

- testjunit
    - sourceSets
        - lptfExperimental
        - other source sets

- basicservices
    - sourceSets
        - testacceptance
        - other source sets

我需要使源代码集basicservices-test验收依赖于源代码集testjunit-lptf实验的输出。

我试图做:

dependencies{
    testacceptanceCompile project(':testjunit').sourceSets.lptfExperimental.output
}

dependencies{
    project.parent.subprojects.each{prj ->
    if(prj.name == "testjunit")
        testacceptanceCompile prj.sourceSets.findByName('lptfExperimental').output
}

但在这两种情况下,我都会收到以下错误:

失败:构建失败,但出现异常。

其中:脚本'C:\Development\default. gradle'行:144

出了什么问题:评估脚本时出现问题。在SourceSet容器上找不到属性“lptf实验”。

只是一个额外的信息:此依赖项在名为default. gradle的文件中声明,该文件应用于项目basicservicesbuild.gradle中。

apply plugin: 'java'
apply plugin: 'eclipse'
...
sourceSets {
    ...
    // test acceptance
    testacceptance{

        java{
            srcDir 'test/acceptance/src/java'
        }

        resources {
            srcDir 'test/acceptance/src/java'
        }
    }
    ...
}

// default dependencies
dependencies{
    testacceptanceCompile project(':testjunit')
    testacceptanceCompile project(':testjunit').sourceSets.lptfExperimental.output
}
...
...
sourceSets{
    ...
    lptfExperimental{

    java {
        srcDir 'lptf-experimental/src/java'
    }

    resources {
        srcDir 'lptf-experimental/src/java'
    }
}
...
apply plugin: 'java'
apply plugin: 'eclipse'
apply from: '../defaults.gradle'

dependencies{
    ...
    compile project(':testjunit')
    ...
}

共1个答案

匿名用户

我可以用这个问题中提到的解决方案解决这个问题。基本上,我在default. gradle中添加了一个指令评估依赖于(':testjunit')。它解决了问题。这个指令的参考在这里。