java - Gradle 依赖于不同项目的源集

标签 java gradle build

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

- testjunit
    - sourceSets
        - lptfExperimental
        - other source sets

- basicservices
    - sourceSets
        - testacceptance
        - other source sets

我需要使源集basicservices-testacceptance依赖于源集testjunit-lptfExperimental的输出。

我尝试过:

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

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

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

FAILURE: Build failed with an exception.

Where: Script 'C:\Development\defaults.gradle' line: 144

What went wrong: A problem occurred evaluating script. Could not find property 'lptfExperimental' on SourceSet container.

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

/defaults.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
}
...

/testjunit/build.gradle:

...
sourceSets{
    ...
    lptfExperimental{

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

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

/basicservices/build.gradle:

apply plugin: 'java'
apply plugin: 'eclipse'
apply from: '../defaults.gradle'

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

最佳答案

我可以使用 this question 中提到的解决方案解决问题. 基本上,我在 defaults.gradle 中添加了指令 evaluationDependsOn(':testjunit')。它解决了这个问题。该指令的引用是 here .

关于java - Gradle 依赖于不同项目的源集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33883770/

相关文章:

android - 迁移到 Android Studio 1.5 后任务 ':tess-two:processReleaseResources' 执行失败

build - 如何准确找出 Visual Studio 2019 重建未修改的 .NET Core 项目的原因

ios - Unity 在 iPhone 上的 GetCloudProjectId() 崩溃

java - Android 应用程序不执行按钮单击

java - 如何从枚举中提取所有值并将它们添加到 List<String>

Gradle:仅检索多个已发布工件中的一个?

android - Android Studio 中的 Gradle 需要 HTTPS 连接

java - 统计实体时限制查询结果

java - 正则表达式过滤具有多个&符号 "&"的URL

android - gradle-android-test-plugin无法复制的构建失败