【问题标题】:Building a test support artifact with dependencies构建具有依赖关系的测试支持工件
【发布时间】:2013-06-16 09:07:01
【问题描述】:

我的源代码有测试和一些测试支持代码,以及通常的源代码。我希望能够将源代码和测试支持作为单独的工件(每个都有自己的一组依赖项)发布,但显然不是测试类。

我的目录结构如下:

src/main/...
src/test/...
src/testsupport/...

像往常一样,我定义了一些依赖项:

dependencies {
    compile 'com.sun.jersey:jersey-core:1.17.1'
    ... more compile dependencies...
    testCompile 'com.google.code.gson:gson:2.1'
    ... more testCompile dependencies...
}

我还需要测试支持sourceSet:

sourceSets {
    testSupport {
        java {
            srcDir 'src/testsupport/java'
        }
        resources {
            srcDir 'src/testsupport/resources'
        }
        compileClasspath += sourceSets.test.compileClasspath
        runtimeClasspath += sourceSets.test.runtimeClasspath
    }
}

我必须将测试类路径添加到 testSupport 路径,因为 testsupport 代码具有相同的依赖关系。

最后,要创建我的工件,我有:

task createTestSupportArtifact (type: Jar) {
    classifier = 'testsupport'
    from sourceSets.testSupport.output
}

artifacts {
    archives file: createTestSupportArtifact.archivePath, builtBy: createTestSupportArtifact
}

但是,在我的其他依赖于这些工件的存储库中,它没有为 testsupport 工件引入任何依赖项。我有一些关于原因的理论(它没有自己的 POM 或者它不知道范围是在运行时测试),但没有具体的。

有没有更好的方法来解决这个问题?也许聪明地使用configurations

【问题讨论】:

    标签: dependencies gradle


    【解决方案1】:

    认为您想在 testSupport 配置上使用 extendsFrom。我没有创建一组测试项目,但合乎逻辑的是,如果您的代码正常工作但您的部门不正常,那么您的配置有问题,而不是 sourceSets。

    当您声明一个新的 sourceSet 时,您会根据配置名称自动获得两个新配置,在您的情况下:testSupportCompiletestSupportRuntime。尝试以下方法将您的正常测试部门与您的 testSupport 部门联系起来。

    configurations {
        testSupportCompile.extendsFrom testCompile
        testSupportRuntime.extendsFrom testRuntime
    }
    

    Gradle 在发布时肯定会使用配置,而且我猜由于您没有明确向 testSupportXYZ 配置添加任何内容,因此当您以后需要支持工件时,它决定没有要解决的依赖关系。上面的代码应该以与链接源代码相同的方式链接您的部门,并希望能解决您的问题。

    【讨论】:

    • 谢谢;很高兴了解extendFrom(旁注:语法已关闭...需要在extendFrom部分周围使用{})。但是,它仍然没有解决问题。我想我可能不得不发布具有不同 artifactId 的工件,而不是仅将它们区分为分类器。
    • 糟糕。我认为它实际上缺少'。 {} 大概也可以工作 - 因为你没有理由撒谎:P - 但 extendsFrom 只是一个方法,所以'。'更简洁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多