我的一个gradle子项目的测试源中有一些实用程序文件,并且想在另一个子项目中使用它们。
我的“源”子项目称为core
,而使用它的子项目称为tem
。
我尝试迁移和集成following example:
In your Server project:
configurations {
testArtifacts.extendsFrom testCompile
}
task testJar(type: Jar) {
classifier "test"
from sourceSets.test.output
}
artifacts {
testArtifacts testJar
}
In your ServerWeb project:
testCompile project(path: ":Server", configuration: 'testArtifacts')
据我所知正在进行对话。我在core.gradle.kts
中添加了以下内容:
val testConfig = configurations.create("testArtifacts") {
extendsFrom(configurations["testCompile"])
}
tasks.register("testJar", Jar::class.java) {
classifier += "test"
from(sourceSets["test"].output)
}
artifacts {
add("testArtifacts", tasks.named<Jar>("testJar") )
}
并尝试在tem.gradle.kts
中引用它:
testImplementation(project(":core", "testArtifacts"))
它可以编译,但是我仍然无法从核心访问这些类。
我在哪里错过了什么?
答案 0 :(得分:2)
您的大多数代码都可以
但是您必须为jar定义classesDirs
tasks.register<Jar>("testJar") {
dependsOn("testClasses")
archiveBaseName.set("${project.name}-test")
from(sourceSets["test"].output.classesDirs)
}
我还添加了依赖于testClasses的类,以确保可以编译类。
您可以通过执行 testJar 任务来测试jar是否正常。然后验证生成的jar是否包含您的类。如果您在from方法调用中出错,则会得到空的jar。
答案 1 :(得分:0)
以下配置对我有用,它包括测试类和测试资源:
核心build.gradle.kts
val testConfig = configurations.create("testArtifacts") {
extendsFrom(configurations["testCompile"])
}
tasks.register("testJar", Jar::class.java) {
dependsOn("testClasses")
classifier += "test"
from(sourceSets["test"].output)
}
artifacts {
add("testArtifacts", tasks.named<Jar>("testJar") )
}
tem build.gradle.kts
testImplementation(project(":core", "testArtifacts"))