使用 gradle.kts 构建并发布测试 类
Build and publish test classes with gradle.kts
我们有一个包含多个子项目的多项目 gradle 存储库。其中一个子项目应该生成单独的 testJar 并将其发布到本地 maven 存储库:
// build a repositories-testJar.jar with test classes for services tests
tasks.register<Jar>("testJar") {
archiveClassifier.set("testJar")
from(sourceSets["test"].output)
}
// the testJar must be built within the build phase
tasks.build {
dependsOn(tasks.withType<Jar>())
}
// needed for publishing plugin to be aware of the testJar
configurations.create("testJar") {
extendsFrom(configurations["testCompile"])
}
artifacts {
add("testJar", tasks.named<Jar>("testJar"))
}
这有效,我可以看到 -testJar.jar
是在 /build/libs
中生成的。
然后,在根项目中 gradle.kts 我们设置了一个发布扩展:
allprojects {
configure<PublishingExtension> {
publications {
create<MavenPublication>(project.name) {
groupId = "foo.bar"
artifactId = project.name.toLowerCase().replace(":", "-")
version = "ci"
from(components["kotlin"])
}
}
repositories {
maven {
url = uri("file://${rootProject.rootDir}/../m2")
}
}
}
}
这也正常工作,我可以看到在 m2
目录中发布的模块。但是 testJar
没有发布。我找不到如何将 testJar
工件附加到根项目中定义的发布的方法。
通过添加解决:
publishing {
publications {
create<MavenPublication>(project.name + "-" + testArtifact.name) {
groupId = "my.group"
artifactId = project.name.toLowerCase().replace(":", "-")
version = "version"
artifact(testArtifact)
}
}
}
我们有一个包含多个子项目的多项目 gradle 存储库。其中一个子项目应该生成单独的 testJar 并将其发布到本地 maven 存储库:
// build a repositories-testJar.jar with test classes for services tests
tasks.register<Jar>("testJar") {
archiveClassifier.set("testJar")
from(sourceSets["test"].output)
}
// the testJar must be built within the build phase
tasks.build {
dependsOn(tasks.withType<Jar>())
}
// needed for publishing plugin to be aware of the testJar
configurations.create("testJar") {
extendsFrom(configurations["testCompile"])
}
artifacts {
add("testJar", tasks.named<Jar>("testJar"))
}
这有效,我可以看到 -testJar.jar
是在 /build/libs
中生成的。
然后,在根项目中 gradle.kts 我们设置了一个发布扩展:
allprojects {
configure<PublishingExtension> {
publications {
create<MavenPublication>(project.name) {
groupId = "foo.bar"
artifactId = project.name.toLowerCase().replace(":", "-")
version = "ci"
from(components["kotlin"])
}
}
repositories {
maven {
url = uri("file://${rootProject.rootDir}/../m2")
}
}
}
}
这也正常工作,我可以看到在 m2
目录中发布的模块。但是 testJar
没有发布。我找不到如何将 testJar
工件附加到根项目中定义的发布的方法。
通过添加解决:
publishing {
publications {
create<MavenPublication>(project.name + "-" + testArtifact.name) {
groupId = "my.group"
artifactId = project.name.toLowerCase().replace(":", "-")
version = "version"
artifact(testArtifact)
}
}
}