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 中保留元数据?
您不需要为您的插件子模块手动定义 MavenPublication
。 java-gradle-plugin
对 maven-publish
插件的应用做出反应,并自动 configures/creates 发布插件工件。请参阅 this 行。
您对生成的 (2) 个工件是正确的。一个是插件标记(单个 pom.xml
),另一个是实际的插件 JAR 工件。
至于 POM 定制,Gradle 似乎提供了自己的 POM,与您定义的任何 POM 定制无关:https://github.com/gradle/gradle/issues/17022
您好,我有一个 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 中保留元数据?
您不需要为您的插件子模块手动定义 MavenPublication
。 java-gradle-plugin
对 maven-publish
插件的应用做出反应,并自动 configures/creates 发布插件工件。请参阅 this 行。
您对生成的 (2) 个工件是正确的。一个是插件标记(单个 pom.xml
),另一个是实际的插件 JAR 工件。
至于 POM 定制,Gradle 似乎提供了自己的 POM,与您定义的任何 POM 定制无关:https://github.com/gradle/gradle/issues/17022