发布至Maven中心仓库
使用eu.kakde.gradle.sonatype-maven-central-publisher:1.0.6
,作为插件引入:
plugins {
id("java")
id("eu.kakde.gradle.sonatype-maven-central-publisher") version "1.0.6"
}
定义项目信息:
val COMPONENT_TYPE = "java" // "java" or "versionCatalog"
val GROUP: String = group.toString()
val ARTIFACT_ID = rootProject.name
val VERSION = version.toString()
val PUBLISHING_TYPE = "AUTOMATIC" // USER_MANAGED or AUTOMATIC
val SHA_ALGORITHMS = listOf("SHA-256", "SHA-512") // sha256 and sha512 are supported but not mandatory. Only sha1 is mandatory but it is supported by default.
val DESC = "A swing framework to support i18n and auto-wired features"
val LICENSE = "Apache-2.0"
val LICENSE_URL = "https://opensource.org/licenses/Apache-2.0"
val GITHUB_REPO = "evalexp/easy-swing.git"
val DEVELOPER_ID = "evalexp"
val DEVELOPER_NAME = "Zhou Hao"
从配置读取账户密码,这里的账户密码不是实际的账户密码,要生成一个User Token:
val sonatypeUsername: String? by project // this is defined in ~/.gradle/gradle.properties
val sonatypePassword: String? by project // this is defined in ~/.gradle/gradle.properties
最后设置插件:
sonatypeCentralPublishExtension {
// Set group ID, artifact ID, version, and other publication details
groupId.set(GROUP)
artifactId.set(ARTIFACT_ID)
version.set(VERSION)
componentType.set(COMPONENT_TYPE) // "java" or "versionCatalog"
publishingType.set(PUBLISHING_TYPE) // USER_MANAGED or AUTOMATIC
// Set username and password for Sonatype repository username.set(System.getenv("SONATYPE_USERNAME") ?: sonatypeUsername)
password.set(System.getenv("SONATYPE_PASSWORD") ?: sonatypePassword)
// Configure POM metadata
pom {
name.set(ARTIFACT_ID)
description.set(DESC)
url.set("https://github.com/${GITHUB_REPO}")
licenses {
license {
name.set(LICENSE)
url.set(LICENSE_URL)
}
}
developers {
developer {
id.set(DEVELOPER_ID)
name.set(DEVELOPER_NAME)
}
}
scm {
url.set("https://github.com/${GITHUB_REPO}")
connection.set("scm:git:https://github.com/${GITHUB_REPO}")
developerConnection.set("scm:git:https://github.com/${GITHUB_REPO}")
}
issueManagement {
system.set("GitHub")
url.set("https://github.com/${GITHUB_REPO}/issues")
}
}}
要注意,需要补充全局Gradle配置(~/.gradle/gradle.properties
):
##############################
# GPG Credentials
# Last 8 characters in your GPG public key
signing.keyId=<ABCD1234>
# Your signing passphrase
signing.password=<passphrase>
# private key secring.gpg file path: /Users/jondoe/.gnupg/secring.gpg
signing.secretKeyRingFile=<secring path>
# sonatype credentials
sonatypeUsername=<username>
sonatypePassword=<password>
##############################
新版的GnuPG没有
secring.gpg
,要自己手动导出gpg --keyring secring.gpg --export-secret-keys > ~/.gnupg/secring.gpg
最后调用publish to sonatype central -> publishToSonatype
任务即可。