我很难理解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"
}
}
}
根据上面的评论为我修复了一些事情。