我的源代码有测试和一些测试支持代码,以及通常的源代码。我希望能够将源代码和测试支持作为单独的工件(每个都有自己的一组依赖项)发布,但显然不是测试类。
我的目录结构如下所示:
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
聪明地使用?