Skip to content

Latest commit

 

History

History
227 lines (147 loc) · 6.3 KB

document.adoc

File metadata and controls

227 lines (147 loc) · 6.3 KB

详细文档

快速启动是一个简单示例,如果你想进行更详细的配置可以参考本文档

一个完整的流程图

publish flow

本文档会根据流程图进行说明

1. Generate

这一步的目的是生成一个符合 Maven 标准的 Metadata.

Medivh-Publish封装了Gradle官方的maven-publish 插件实现这个功能

如果你没有引入这个插件,Medivh-publisher 会自动帮你引入,你不需要做任何配置。


和 Maven-Publish 的配置关系

如果你已经使用了Maven-Publish插件配置,Medivh-Publish会自动使用你的配置,你不需要做任何额外的配置。

如果你对于 Maven-Publish插件配置没有完整填写,Medivh-Publish会帮你填入默认值,并且会在控制台输出警告信息。

配置优先级

Medivh-Publish > Maven-Publish > 默认值

所以如果你已经有了Maven-Publish配置,也可以继续使用,Medivh-Publish会自动使用你的配置。

maven icon Maven-Publish 配置

publishing {
    publications {
        create<MavenPublication>("medivh-api") {
            groupId = project.group.toString()
            artifactId = project.name
            version = project.version.toString()
            from(components["java"])
            pom{
                name = "medivh-api"
                description = "medivh plugin api"
                url = "https://github.com/medivh-project/medivh"
                licenses{
                    license{
                        name = "GPL-3.0 license"
                        url = "https://www.gnu.org/licenses/gpl-3.0.txt"
                    }
                }
                developers {
                    developer {
                        id = "id"
                        name = "name"
                        email = "email"
                    }
                }
                scm {
                    connection = "scm:git:"
                    url = "https://github.com/medivh-project/medivh"
                }
            }
        }
    }
}

medivh icon Maven-Publish 配置

和Maven-Publish配置非常类似

medivhPublisher{
    groupId = project.group.toString()
    artifactId = project.name
    version = project.version.toString()
    pom{
        name = "medivh-api"
        description = "medivh plugin api"
        url = "https://github.com/medivh-project/medivh"
        licenses{
            license{
                name = "GPL-3.0 license"
                url = "https://www.gnu.org/licenses/gpl-3.0.txt"
            }
        }
        developers {
            developer {
                id = "id"
                name = "name"
                email = "email"
            }
        }
        scm {
            connection = "scm:git:"
            url = "https://github.com/medivh-project/medivh"
        }
    }
}

Medivh-Publish保证你无论怎么配置都不会出错,因为Medivh-Publish会帮你填充默认值,但仍建议你检查自己的配置是否有遗漏。

配置详情

在Sonatype的 官方文档中,要求发布的Pom Xml中需要含有如下配置:

配置的填充颗粒度到每一个属性配置。举个例子:

scm信息需要包含 connectionurl 两个属性,你配置了 connection 但是没有配置 url,Medivh-Publish仍然会帮你填充另一个属性。

如果你手动配置了这些参数,即使这些内容是空的,Medivh-Publish会使用你的配置不会覆盖默认值,除非设置了 null,因为在 Maven 中这是非法的。

配置 是否必须 描述

源码和文档

如果不上传,在IDE中无法下载源码

校验和签名

用于文件校验,后文会详细说明

正确的坐标

上传工件的唯一标识 "com.example:my-library:1.0.0"

项目信息

包含name,description,url三个属性

开源协议

开发者信息

scm信息

关于版本控制的信息

1 源码和文档

Medivh-Publish默认会增加源码和文档的上传,如果你不需要可以在build.gradle配置:

medivhPublisher{
    withoutJavaDocJar()
    withoutSourcesJar()
}

默认配置相当于:

java {
    withJavadocJar()
    withSourcesJar()
}

2 校验和签名

此配置的目的得到Maven所需的签名文件

Medivh-Publish 封装了Gradle官方的 signing 插件实现这个功能,一般来说不用特殊配置

3 正确的坐标

此配置最终是用户在引用你的库时需要的坐标,例如: com.example:my-library:1.0.0

Medivh-Publish 默认的配置是

groupId = project.group

artifactId = project.name

version = project.version

4 项目信息

项目信息包含name,description,url三个属性

Medivh-Publish默认会把

name = project.name

description = project.description

Medivh-Publish会获取项目的 git远程仓库地址作为url的值,否则会填空字符

url = gitRemoteUrl or empty

5 开源协议

Medivh-Publish默认设置一个空的开源协议

6 开发者信息

Medivh-Publish 默认会获取git仓库的开发者信息

name 默认是 git config user.name

email 默认是 git config user.email

id 默认是 git config user.name

7 SCM信息

SCM 有两个信息 connectionurl

Medivh-Publish 会获取git仓库信息

connection 默认是 scm:git:remoteUrl

url 默认是 remoteUrl

如果没有设置 git远程仓库,会填入空字符串