使用JReleaser发布到Maven Central时遇‘sonatype未解析引用’问题
解决JReleaser Kotlin DSL中Sonatype Portal配置未识别的问题
问题根源
JReleaser的Groovy DSL与Kotlin DSL语法存在差异:Groovy里用sonatype闭包配置Sonatype Portal的逻辑,在Kotlin DSL中需要通过portal()函数来实现,而非直接使用sonatype代码块。
修正后的配置代码
将原代码中的sonatype块替换为portal()调用,同时注意Kotlin DSL中属性赋值需用.set()方法,修正后的root-publication.gradle.kts如下:
// root-publication.gradle.kts (in buildSrc/src/main/kotlin) plugins { `maven-publish` id("org.jreleaser") } allprojects { group = "io.github.aeckar" version = "1.0.0" } jreleaser { deploy { maven { mavenCentral { portal { // 替换原sonatype块为portal()函数 setActive("ALWAYS") url.set("https://central.sonatype.com/api/v1/publisher") stagingRepository.set("target/staging-deploy") } } } } }
额外注意点
- 确保使用的JReleaser版本支持Sonatype Portal配置,建议升级到最新稳定版
- 无需额外应用Nexus Publish插件,JReleaser的Maven部署模块已内置相关功能
- Kotlin DSL中所有配置属性都需要通过
.set()方法赋值,这是与Groovy DSL直接赋值的核心区别
内容的提问来源于stack exchange,提问作者Angel E.
相关产品推荐
相关产品推荐

