Gradle 如何发布一个 gradle-plugin 到 maven central

Gradle how to publish a gradle-plugin to maven central

您好,我有一个 java 项目,其中包含一个子模块,它是一个 gradle 插件。我想发布这个模块到maven central。

我在 build.gradle:

中使用了这两个插件
plugins {
  id 'java-gradle-plugin'
  id 'maven-publish'
}

我的 publishing 块看起来像:

publishing {
    publications {
        javaLibrary(MavenPublication) {
            from components.java
            artifact sourcesJar
            artifact javadocJar

            artifactId = project.archivesBaseName

            pom {
                name = artifactId
                description = "..."

                url = 
                licenses {
                    license {
    
                    }
                }
                developers {
                   ...
                }
                scm {
                   ...
                }
                issueManagement {
                   ... 
                }
                ciManagement {
                   ...
                }
            }
        }
    }

    repositories { maven { url = "some local repo" } }
}

我注意到当我构建这个模块时,生成的 pom-default.xml 是我所期望的,但是当我 运行 gradle publishToMavenLocal 并手动检查 pom.xml 文件时.m2 文件夹,name description licenses 等所有元数据都消失了!

我还注意到在.m2文件夹中有2个工件与这个插件相关,我认为它与https://docs.gradle.org/current/userguide/plugins.html#sec:plugin_markers有些相关,但我不完全理解其含义。如上所述,这两个工件的 pom 都缺少 pom 元数据。

一些 gradle 专家可以帮助我:如何在发布的 pom 中保留元数据?

您不需要为您的插件子模块手动定义 MavenPublicationjava-gradle-pluginmaven-publish 插件的应用做出反应,并自动 configures/creates 发布插件工件。请参阅 this 行。

您对生成的 (2) 个工件是正确的。一个是插件标记(单个 pom.xml),另一个是实际的插件 JAR 工件。

至于 POM 定制,Gradle 似乎提供了自己的 POM,与您定义的任何 POM 定制无关:https://github.com/gradle/gradle/issues/17022