使用maven发布插件发布Kotlin多平台库时,如何设置SoftwareComponent



我很难理解Maven发布插件在发布kotlin多平台项目时是如何获得正确的SoftwareComponent来发布的。

在一个简单的java项目中,配置插件如下:

publishing {
publications {
create<MavenPublication>("maven") {
groupId = "org.gradle.sample"
artifactId = "library"
version = "1.1"
from(components["java"])
}
}
}

使用from(components["java"])声明来选择SoftwareComponent

发布kotlin多平台库的教程跳过了这一点。更糟糕的是,当我将其留空并发布到maven local时,我得到了一个没有jar的空pom.xml。

publishing {
publications {
register("lib", MavenPublication::class) {
...
}
}
repositories {
...
}
}

更令人困惑的是,如果我把上面的内容改成这样,我确实得到了一个源jar,但我没有得到所有目标平台的出版物:

publishing {
publications {
withType<MavenPublication> {
...
}
}
repositories {
...
}
}

上面的唯一区别是使用withType<MavenPublication>register("lib", MavenPublication::class)。我不知道为什么使用它们中的任何一个都会产生完全不同的结果。

使用maven发布插件发布Kotlin多平台库时,如何正确设置SoftwareComponent?

为了正确配置maven-publish插件进行发布,必须注意不要覆盖maven发布块中的任何属性。那是

publishing {
publications {
withType<MavenPublication> {
// Don't do this. Set the group and version on the project/subproject level.
// The multiplatform plugin will read it appropriately.
groupId = "org.gradle.sample"
artifactId = "library"
version = "1.1"
}
}
}

根据上面的评论为我修复了一些事情。

相关内容

  • 没有找到相关文章

最新更新